如何更改MySQL实例root用户密码?

时间:2017-11-25 22:13:28

标签: mysql

我曾经在Ubuntu上有一个MySQL服务器实例,但出于安全考虑,我决定使用两个实例,因为测试和prod应用程序都将为Web用户开放。因此,我配置了两个MySQL服务器实例并运行mysqld_multi start来设置数据库。我的/etc/mysql/my.cnf:

[mysqld0]
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
user=mysql
pid-file=/var/run/mysqld/mysqld0.pid
socket=/var/run/mysqld/mysqld0.sock
port=3306
datadir=/home/prod/data
log_error=/var/log/mysql/error0.log

[mysqld1]
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
user=mysql
pid-file=/var/run/mysqld/mysqld1.pid
socket=/var/run/mysqld/mysqld1.sock
port=3307
datadir=/home/test/data
log_error=/var/log/mysql/error1.log

使用mysqld_multi start 0,1我启动了两个实例但无法使用root用户访问它们 - 在localhost上root用户访问被拒绝。

我试图遵循这些说明(提供额外的--socket参数)https://support.rackspace.com/how-to/mysql-resetting-a-lost-mysql-root-password/,因为他们之前帮助过我但没有用过。

当在安全模式下连接到MySQL时,我也会看到以前在原始实例中设置的用户。

也许我理解多个MySQL服务器实例以及它们应该如何以错误的方式工作?所有实例是否共享相同的用户?如何访问新创建的实例?

2 个答案:

答案 0 :(得分:1)

必须使用其他参数运行mysqld_safe - 为每个实例mysqld_safe --mysqld=/usr/sbin/mysqld --basedir=/home/test/data/mysql --datadir=/home/test/data --skip-grant-tables提供dirs。之后一切都按预期进行了

答案 1 :(得分:0)

以下是在SQL中执行此操作的方法

对于MySQL 5.7.6或更高版本,您可以执行

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';

或者对于MySQL 5.7.5或更早版本,您可以

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');