如何修改ubuntu服务器的MySQL root密码和用户名?我需要停止mysql服务之前,设置任何更改?

我有一个phpmyadmin设置以及,phpmyadmin会自动更新?


当前回答

1.打开nano / vim,创建一个包含以下内容的文件,并将文件保存为~/mysql-pwd

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

停止mysql sudo systemctl停止mysql 执行sudo mysqld -init-file=~/mysql-pwd命令 重启mysql sudo systemctl start mysql 现在登录mysql -u root -p。password将是你的NEWPASSWORD

其他回答

这就是我的解决方案。我在Ubuntu 18.04工作: https://stackoverflow.com/a/46076838/2400373

但是重要的是最后一步的改变:

UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost'; 

你不需要这些。只需登录:

Mysql -u root -p

然后按照mysql>提示修改当前用户的密码:

mysql> set password=password('the_new_password');
mysql> flush privileges;

1.打开nano / vim,创建一个包含以下内容的文件,并将文件保存为~/mysql-pwd

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

停止mysql sudo systemctl停止mysql 执行sudo mysqld -init-file=~/mysql-pwd命令 重启mysql sudo systemctl start mysql 现在登录mysql -u root -p。password将是你的NEWPASSWORD

对于Ubuntu 18.04和mysql版本14.14,Distrib 5.7.22,请按照以下步骤重置mysql密码。

步骤1

sudo systemctl stop mysql

步骤2

sudo systemctl edit mysql

这个命令将在nano编辑器中打开一个新文件,您将使用该文件编辑MySQL的服务覆盖。这些更改MySQL的默认服务参数。该文件将为空,因此添加以下内容:

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid --skip-grant-tables --skip-networking

步骤3

sudo systemctl daemon-reload
sudo systemctl start mysql

步骤4

sudo mysql -u root

步骤5

FLUSH PRIVILEGES;

步骤6

UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHEREuser = 'root';

步骤7

UPDATE mysql.user SET plugin ='mysql_native_password' WHERE user = 'root';

步骤8

sudo systemctl revert mysql

最后

sudo systemctl restart mysql

现在享受

首先执行以下命令:

sudo mysql

然后你应该检查你的MySQL用户帐户使用的身份验证方法。运行这个命令

SELECT user,authentication_string,plugin,host FROM mysql.user;

现在你可以看到这样的东西:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

在上面的表格中,你可以看到你所有的mysql用户的帐户状态&如果你已经设置了root帐户的密码,然后在插件列中看到mysql_native_password而不是auth_socket。 总之,要更改root密码,您应该运行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

请务必将密码更改为您选择的强密码。 然后重新加载你的服务器,把你的新变化生效运行这个;

FLUSH PRIVILEGES;

所以再次检查你的mysql所使用的认证方法,通过下面的命令:

SELECT user,authentication_string,plugin,host FROM mysql.user;

现在输出是:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

正如您在授权表中看到的,您的根帐户具有mysql_native_password . 现在你可以退出MYSQL shell了

exit;

就是这样。只是你应该通过sudo service mysql restart重新启动mysql。 现在你可以用root帐号和密码轻松登录mysql。