全新的 MYSQL 安装,用户“root”的访问被拒绝

Posted

技术标签:

【中文标题】全新的 MYSQL 安装,用户“root”的访问被拒绝【英文标题】:Fresh MYSQL install, Access denied for user 'root' 【发布时间】:2014-03-07 06:25:44 【问题描述】:

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

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

mysql -u root -p

并得到“ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)”

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

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

在很大程度上,我仍然是一个 linux 新手,所以任何帮助都将不胜感激!

【问题讨论】:

看看这里***.com/questions/19220085/… 我不得不使用 'sudo' 作为 root ...如果你想摆脱 sudo ***.com/a/37241990/839273,可以看这里 【参考方案1】:

我仍然不知道为什么我被锁定了,但为了解决这个问题,我必须重置 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 用户密码的方法

【讨论】:

对于 mysql 5.7.X,密码列已更改为 authentication_string,其余的对我有用:)【参考方案2】:

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

【讨论】:

但这是为什么呢?【参考方案3】:

一旦你杀死了mysqld进程,你需要创建一个/var/run/mysqld目录供MySQL进程用来存储和访问一个socket文件:

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

很多答案都缺少这一点。然后,您可以使用 --skip-grant-tables 选项成功启动 mysql 进程。你可以运行命令:

$ jobs

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

N/B 这是在 Ubuntu 18.04

【讨论】:

以上是关于全新的 MYSQL 安装,用户“root”的访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

用户“root@localhost”的访问被拒绝(使用密码:否)

用户 'root'@'localhost' 的访问被拒绝

用户'root'@'localhost'的MYSQL访问被拒绝

EasyPHP 无法访问 PhpMyAdmin

登录错误 1698 (28000):用户 'root'@'localhost' 的访问被拒绝

用户'root'@'localhost'的访问被拒绝(使用密码:YES)