新的MYSQL安装,用户'root'拒绝访问

时间:2014-02-10 03:08:40

标签: mysql lamp ubuntu-13.10

我有一台旧灯泡服务器,我想搬到新机器上,所以我做了一个mysqldump,在新机器上安装了Ubuntu Server 13.10,在安装过程中安装了灯泡,然后从旧灯泡服务器导入了旧的mysql数据库。令我惊讶的是,在mysql导入后,一切似乎都很完美。

然后我尝试将myscldump所有数据库每小时设置一个cron作业到备份服务器。为了确保它有效,我尝试在新服务器上手动运行mysqldump,以确保它工作(而不是等待cron作业运行)。无论如何,mysqldump函数不起作用,由于某种原因,现在我根本无法访问mysql。我试过了:

mysql -u root -p

并获取“ERROR 1045(28000):拒绝访问用户'root'@'localhost'(使用密码:YES)”

此外,我的PHP脚本也不能访问mysql数据库。所以我被锁定了。

我不知道为什么运行mysqldump(或crontab)会把我锁定,所以我认为它与从我的旧灯服务器(运行旧版本的mysql)导入所有数据库有关。

我大部分时间仍然是Linux新手,所以任何帮助都会受到赞赏!

3 个答案:

答案 0 :(得分:8)

我仍然不知道 为什么 我被锁定了,但为了解决这个问题我必须重置mysql root密码,我按照说明操作这个网站(但我为Ubuntu 13.10修改了它们):https://help.ubuntu.com/community/MysqlPasswordReset

使用以下命令停止mysql守护进程:

sudo pkill mysqld

使用带有此命令的--skip-grant-tables选项启动mysqld守护程序进程

sudo /usr/sbin/mysqld --skip-grant-tables &

使用此命令启动mysql客户端进程

mysql -u root

从mysql提示符执行此命令以便能够更改任何密码

FLUSH PRIVILEGES;

然后重置/更新密码

SET PASSWORD FOR root@'localhost' = PASSWORD('password');

如果你有一个可以从任何地方连接的mysql root帐户,你也应该这样做:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

收到指示查询成功的消息(一个或多个受影响的行)后,刷新权限:

FLUSH PRIVILEGES;

然后停止mysqld进程并以经典方式重新启动它:

sudo pkill mysqld
sudo service mysql restart

其中一些步骤可能是不必要的,但这是我从旧灯泡服务器导入mysqldump文件后在Ubuntu Server 13.10上成功重置mysql root用户密码的方法

答案 1 :(得分:3)

我的问题是我只能从以root身份登录的CLI访问mysql。

答案 2 :(得分:1)

杀死mysqld进程后,需要创建一个/ var / run / mysqld目录,供MySQL进程用来存储和访问套接字文件:

$ sudo mkdir -p /var/run/mysqld
$ sudo chown mysql:mysql /var/run/mysqld

很多答案中都没有此内容。然后,您可以使用--skip-grant-tables选项成功启动mysql进程。您可以运行以下命令:

$ jobs

在继续操作之前确认该进程正在运行。

不适用这是 Ubuntu 18.04