MySQL:升级到 5.5 后我无法以 root 身份登录
Posted
技术标签:
【中文标题】MySQL:升级到 5.5 后我无法以 root 身份登录【英文标题】:MySQL: I cannot login as root after upgrading to 5.5 【发布时间】:2011-12-17 05:44:10 【问题描述】:我已经按照tutorial 升级到 mysql 5.5。
完成所有步骤后,我执行$ mysql -u root -pXXXX
并显示:
Error 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES).
该教程前段时间对我有用,但现在我遇到了这个问题。我已经重新安装了 ubuntu+mysql 5.1 并且执行“mysql -u root -pXXXX”没有问题,但是升级到 5.5 后我再次遇到上述错误..
这是我的 /etc/my.cnf:
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /var/run/mysqld/mysqld.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
tmpdir = /tmp
log_error = /var/log/mysql/error.log
skip-external-locking
...
有什么想法吗?
编辑: 解决了,好吧.. 我只需要备份用户“root”,因为我要在升级到 5.5 之前删除数据库。
问候
贾维
【问题讨论】:
【参考方案1】:在 Ubuntu 18.04 中,作为 root 用户:
# service mysql stop
# mkdir /etc/run/mysql && chown -R mysql:mysql /etc/run/mysql
# mysqld_safe --skip-grant-tables --user=mysql &
这将在不验证 root 用户的情况下启动 mysql。然后,在另一个终端/ssh 窗口中,您可以启动 mysql 客户端并更改 root 用户密码:
# mysql -u root
mysql> FLUSH PRIVILEGES;
mysql> use mysql;
mysql> UPDATE user SET authentication_string = PASSWORD('NeWPaSSWoRD') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
然后,在第一个终端中停止 mysqld_safe 进程。将下面的“processid”替换为/var/run/mysqld/mysqld.pin的内容。
# kill -9 "processid"
启动mysql并再次尝试登录。
# service mysql start
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26-0ubuntu0.18.04.1-log (Ubuntu)
mysql>
【讨论】:
【参考方案2】:回复:CENTOS
确保您已将 mysql 设置为开机自动启动:
chkconfig --list mysqld
如果没有,则将mysql添加到启动脚本中:
chkconfig --levels 345 mysqld on
...然后重新启动。
如果这仍然不起作用,这对我有用:
/etc/init.d/mysqld 停止
mysqld_safe --skip-grant-tables &
mysql -u root
mysql>使用mysql;
mysql> 更新用户设置密码=PASSWORD("newrootpassword") where User='root';
mysql> 刷新权限;
mysql>退出
/etc/init.d/mysqld 停止
/etc/init.d/mysqld 启动
【讨论】:
【参考方案3】:让自己免于头疼...您的问题可能是您缺少密码周围的引号。特别是因为您实际上可以通过 -p 开关登录而不使用您的 .my.cnf。
[client]
user = myusername
password = "mypassword"
host = localhost
http://dev.mysql.com/doc/refman/5.5/en/option-files.html
【讨论】:
【参考方案4】:只是说你真的用错了密码……
也许你必须重置root密码,虽然我不知道为什么(也许更新程序覆盖了它?),这是过程:
-
确保没有运行 mysqld 守护程序。
进入你的 mysql/bin 目录
用
mysqld_safe --skip-grant-tables
启动一个mysql 守护进程(注意PID)
启动命令行mysql:mysql
用您的编辑执行这个小脚本:
[代码]
使用mysql
;
更新user
SET Password
=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE User
= 'root';
出口;
[/代码]
现在你只需要杀死你的mysqld_safe
(还记得PID吗?..)并正常启动守护进程。
【讨论】:
谢谢,但 root 用户已经消失。我正在寻找信息来创建一个新的,但我没有找到任何东西..有什么想法吗? 这真的很奇怪。您可以在安全的 mysql shell 中发出命令:GRANT ALL PRIVILEGES ON *.* TO root@'127.0.0.1' IDENTIFIED BY 'your-password-here';
。以上是关于MySQL:升级到 5.5 后我无法以 root 身份登录的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 5.5 & 5.7 源码包如何升级到MySQL 5.7.26