无法登录MySQL

即使用以下命令重置root密码后,我也无法登录MySQL。 (列出其他命令以提供其他信息。)

# sudo dpkg-reconfigure mysql-server-5.1 # mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) # telnet 127.0.0.1 3306 Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused # ps -Aw |grep mysql 26522 ? 00:00:00 mysqld # /etc/init.d/mysql start Rather than invoking init scripts through /etc/init.d, use the service(8) utility, eg service mysql start Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the start(8) utility, eg start mysql 

也,

  # sudo mysqladmin -u root password 123 mysqladmin: connect to server at 'localhost' failed 

看来MySQL运行不正常。

每当我需要这样做时,这都有效…

停止MySQL服务器:

 sudo /etc/init.d/mysql stop 

启动mysqld配置。

 sudo mysqld --skip-grant-tables & 

以root身份登录MySQL。

 mysql -u root mysql 

用您的新密码替换YOURNEWPASSWORD!

 UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; exit; 

应该有另一个管理员用户, debian-sys-maint 。 检查文件/etc/mysql/debian.cnf以获取其密码(未加密)。

使用此密码登录您的mysql服务器:

 mysql -u debian-sys-maint -p 

并为用户root设置新密码:

 mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> quit; 

您可以先检查mysql是否正在运行并侦听连接:

 sudo netstat -atpn | grep mysql 

它应该给你一些类似的东西

 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1306/mysqld 

如果mysql没有运行,您应该检查/var/log/mysql.err/var/log/mysql.log以获取详细信息。

运行以下命令:

 mysql -uroot -p -hlocalhost sudo service mysql restart mysql -u root -p 

这应该工作。

我最后遇到了类似的问题,我能够以这种方式登录(用实际用户替换“用户”)

 mysql -h 127.0.0.1 -u "user" 

这是因为我必须指定主机并且没有设置“用户”帐户的密码。