1

我已按照本教程升级到 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 之前要删除数据库。

问候

哈维

4

4 回答 4

2

这只是说你真的使用了错误的密码......

也许您必须重置 root 密码,尽管我不知道为什么(也许更新程序覆盖了它?),这是过程:

  1. 确保没有运行 mysqld 守护程序。
  2. 进入你的 mysql/bin 目录
  3. 启动一个mysql守护进程mysqld_safe --skip-grant-tables(注意PID)
  4. 启动命令行mysql:mysql
  5. 使用您的编辑执行这个小脚本:

[代码] 使用mysql;UPDATE userSET Password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE User= 'root'; 出口; [/代码]

现在您只需要杀死您的mysqld_safe(还记得 PID 吗?...)并正常启动守护程序。

于 2011-10-28T12:35:34.693 回答
2

在 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>
于 2019-05-10T19:44:35.960 回答
0

避免让自己头疼……您的问题可能是您缺少密码周围的引号。特别是因为您实际上可以通过 -p 开关登录而不使用您的 .my.cnf。

[client]
user = myusername
password = "mypassword"
host = localhost

http://dev.mysql.com/doc/refman/5.5/en/option-files.html

于 2014-07-25T17:27:40.413 回答
0

回复:CENTOS

确保您已将 mysql 设置为在启动时自动启动:

chkconfig --list mysqld

如果没有,则将 mysql 添加到启动脚本中:

chkconfig --levels 345 mysqld on

...并重新启动。

如果这仍然不起作用,这对我有用:

/etc/init.d/mysqld 停止

mysqld_safe --skip-grant-tables &

mysql -u 根目录

mysql>使用mysql;

mysql> 更新用户设置密码=PASSWORD("newrootpassword") where User='root';

mysql> 刷新权限;

mysql>退出

/etc/init.d/mysqld 停止

/etc/init.d/mysqld 启动

于 2015-06-08T23:47:31.357 回答