首页 > 解决方案 > 导入后,mysqldump 无法使用 root 或任何创建的用户访问 MySQL

问题描述

背景:我使用vagrant(Ubuntu 18.04)创建我的开发环境,我正在安装PHP,MySQL和其他东西,但最近我遇到了我可以访问mysql的问题,然后我得到了经典错误:

错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)

使用sudo mysql

错误 1045 (28000): 用户 'otheruser'@'localhost' 的访问被拒绝(使用密码:是)

尝试的时候mysql -u otheruser -p

问题是 MySQL 对于一些“vagrant up”和“vagrant halt”工作正常,但由于某种原因,当我再次启动该机器时,我无法再访问 MySQL。我知道我可以重置 MySQL 根密码、删除 MySQL 或执行其他快速解决方案,但最重要的是我想知道问题的原因是什么,因为起初我在考虑与我对我的更新所做的更新有关的事情vagrant box,或者 Ubuntu 上的更新。

当我使用 Ubuntu 在那个 Box 上安装 mysql 时,我使用 .sh 文件来自动化该过程,这里是 mysql 的部分:

# Mysql Instalation
sudo apt install mysql-server -y
sudo mysql_secure_installation
sudo mysql < setup.sql 

和 setup.sql :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';
FLUSH PRIVILEGES;
CREATE USER 'otheruser'@'localhost' IDENTIFIED BY 'otherpassword';
GRANT ALL PRIVILEGES ON * . * TO 'otheruser'@'localhost';
FLUSH PRIVILEGES;

然后我试图找出问题所在并尝试解决它,首先我在 setup.sql 文件中注释了 root 语句的行,然后在 .sh 文件中注释了“mysql_secure_installation”行,但问题仍然存在;所以为了快速解决,我破坏了盒子然后我再次创建它,但这变得很无聊,所以我在这里描述我的问题。

所以恢复的问题是:

因为每次出现问题时创建和销毁盒子都是压倒性的,最重要的是,当我将应用程序移动到生产服务器时,我不希望出现这种问题。

感谢您花时间阅读本文。祝你今天过得愉快。

2020 年 2 月 6 日更新

在查看我的部署过程以查找有关该问题的更多信息后,我发现问题是从我的生产服务器的 mysqldump 导入时开始的;就在导入之后vagrant haltvagrant up一次又一次地出现问题,所以我无法再次登录 MySQL。

这是我的 mysqldump 过程和我的导入过程,以帮助是否有问题。

带有 Ubuntu 16.04 MySQL 5.7.29 的生产服务器

mysqldump -u root -p --all-databases > alldb_04-02-2020.sql

带有 Ubuntu 18.04 MySQL 5.7.29 的 Vagrant Box

mysql -u otheruser -p < alldb_04-02-2020.sql

标签: mysqlubuntuvagrant

解决方案


推荐阅读