无法为 MySQL root 用户设置密码

Posted

技术标签:

【中文标题】无法为 MySQL root 用户设置密码【英文标题】:Cannot set password for MySQL root user 【发布时间】:2019-09-21 23:07:42 【问题描述】:

我正在尝试让 mysql 在我的本地主机上运行。这在我之前从未发生过,但在安装时sudo apt-get install mysql-server 并没有要求我输入初始密码。

在搜索“重置”我的密码的答案并与目录权限作斗争后,我目前处于这种状态:

mysqld_safe 解决方案:

重启电脑后,mysql -u root -p会问我密码,输入后会报ERROR 1698 (28000): Access denied for user 'root'@'localhost' 如果我改为尝试mysql -u root(无密码),它将显示ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 如果我通过mysqld_safe --skip-grant-tables 运行其他人发布的有关重置密码的建议,那么我在此过程中遇到了一些问题: 首先我运行sudo service mysql stop 然后sudo mysql_safe --skip-grant-tables 会说mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists. 如果我这样做sudo mkdir -p /var/run/mysqldsudo chown mysql /var/run/mysqld,我可以解决这个问题 此后,运行mysqld_safe 将运行消息Starting mysqld daemon with databases from /var/lib/mysql,然后挂起。而 Ctrl+C 并没有让我摆脱困境。 在一个新的终端窗口中,我现在可以实际连接mysql -u root 并获得mysql> 提示符。 我可以使用use mysql; update user set authentication_string=password('0000') where user='root';flush privileges; 设置一个新密码,这将告诉我它成功地更新了带有消息Rows matched: 1 Changed: 1 Warnings: 1 的行 警告仅指出:'PASSWORD' is deprecated and will be removed in a future release. 在这一切之后,我又回到了第一点:进程仍然挂起,所以我必须重新启动,因为killall mysqld_safeno process found。重新启动并输入我的新密码0000 后,我将被拒绝访问。

系统是Linux 4.15.0-48-generic #51-Ubuntu SMP

mysqladmin 解决方案

如果我运行mysqladmin -u root password '0000'(没有sudo),我会得到:

mysqladmin: 连接到 'localhost' 的服务器失败

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

如果我用sudo 运行它,我会得到:

mysqladmin: [警告] 在命令行界面使用密码可能不安全。

警告:由于密码将以明文形式发送到服务器,请使用 ssl 连接以确保密码安全。

最后一个并没有真正告诉我密码是否发生了变化;它是否被拒绝(因为这是一个警告,而不是错误,我认为它应该通过),但在任何一种情况下,尝试与0000 连接仍然会说“访问被拒绝”。

非常感谢任何有关如何解决此问题的建议。

【问题讨论】:

【参考方案1】:

我并没有直接解决mysql 的问题;然而对我来说,可接受的解决方案是切换到不同的数据库软件,但它仍然是 MySQL 系统,它让我启动并运行。因此,如果有人卡在现有解决方案上无法像我一样工作,也许这会派上用场,让您上路并最终再次编写代码。

我所做的是:

    从我的系统中清除了mysql 手动删除了/etc/mysql/var/lib/mysql(不知道这一步是否必要) apt clean, apt autoremove, apt update 已安装mariadb 关注these instructions 以摆脱超时错误 使用mysqld_safe --skip-grant-tables 方法创建具有所有权限的新用户,因为与root 连接总是失败

php + MariaDB 现在又可以工作了。

【讨论】:

以上是关于无法为 MySQL root 用户设置密码的主要内容,如果未能解决你的问题,请参考以下文章

Linux 下安装 MySQL 后给 root 用户设置密码

MySQL 8.0为root用户设置密码

怎么查看mysql的密码是啥

设置修改及找回 MySQL 数据库 root 用户的密码

2018-03-28设置及修改mysql用户密码学习笔记

XAMPP 为 MariaDB 设置 root 用户密码