问题描述
如何在ubuntu服务器中更改MySQL的root密码和用户名?设置任何更改之前,我需要停止mysql服务吗?
我也有phpmyadmin设置,phpmyadmin会自动更新吗?
最佳解决方法
在Ubuntu Linux上设置/更改/重置MySQL根密码。在终端中输入以下行。
-
停止MySQL服务器:
sudo /etc/init.d/mysql stop
-
启动
mysqld
配置:sudo mysqld --skip-grant-tables &
在某些情况下,您必须先创建
/var/run/mysqld
:sudo mkdir -v /var/run/mysqld && sudo chown mysql /var/run/mysqld
-
以root用户身份登录到MySQL:
mysql -u root mysql
-
用新密码替换
YOURNEWPASSWORD
:UPDATE mysql.user SET Password = PASSWORD('YOURNEWPASSWORD') WHERE User = 'root'; FLUSH PRIVILEGES; exit;
Note: on some versions, if
password
column doesn’t exist, you may want to try:
UPDATE user SET authentication_string=password('YOURNEWPASSWORD') WHERE user='root';
注意:此方法不被认为是重置密码的最安全方法,但是它可以工作。
参考文献:
次佳解决方法
在ubuntu服务器上重置根密码的官方简便方法…
如果您使用的是16.04、14.04和12.04:
sudo dpkg-reconfigure mysql-server-5.5
如果您使用的是10.04:
sudo dpkg-reconfigure mysql-server-5.1
如果不确定安装了哪个mysql-server版本,则可以尝试:
dpkg --get-selections | grep mysql-server
mysql-server-5.7的更新说明
请注意,如果使用的是mysql-server-5.7,则不能使用上面显示的更简单的dpkg-reconfigure方法。
如果您知道密码,请登录并运行此命令:
UPDATE mysql.user SET authentication_string=PASSWORD('my-new-password') WHERE USER='root';
FLUSH PRIVILEGES;
另外,您可以使用以下方法:
sudo mysql_secure_installation
这将向您询问有关确保安装安全的一系列问题(强烈建议),包括是否要提供新的root密码。
如果您不知道root密码refer to this Ubuntu-centric write up on the process。
查看更多信息:
https://help.ubuntu.com/16.04/serverguide/mysql.html https://help.ubuntu.com/14.04/serverguide/mysql.html
第三种解决方法
唯一对我有用的方法是描述的here(我正在运行ubuntu 14.04)。为了清楚起见,这些是我遵循的步骤:
-
sudo vim /etc/mysql/my.cnf
-
在末尾添加以下行:[mysqld] skip-grant-tables
-
sudo service mysql restart
-
mysql -u root
-
use mysql
-
select * from mysql.user where user = 'root';
-查看顶部以确定密码列是称为password还是authentication_string -
UPDATE mysql.user set *password_field from above* = PASSWORD('your_new_password') where user = 'root' and host = 'localhost';
-使用上方的正确密码列 -
FLUSH PRIVILEGES;
-
exit
-
sudo vim /etc/mysql/my.cnf
-
如果要保持安全标准,请删除在步骤2中添加的行。
-
sudo service mysql restart
供参考:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
第四种方法
我将分享逐步的最终解决方案,以在Linux Ubuntu中重置MySQL密码。
Reference taken from blog (dbrnd.com)
步骤1:停止MySQL服务。
sudo stop mysql
步骤2:杀死所有正在运行的mysqld。
sudo killall -9 mysqld
步骤3:以安全模式启动mysqld。
sudo mysqld_safe --skip-grant-tables --skip-networking &
步骤4:启动mysql客户端
mysql -u root
步骤5:成功登录后,请执行此命令以更改任何密码。
FLUSH PRIVILEGES;
步骤6:您可以更新mysql root password。
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
注意:在MySQL 5.7上,列Password
称为authentication_string
。
步骤7:请执行此命令。
FLUSH PRIVILEGES;
第五种方法
什么对我有用(Ubuntu 16.04,mysql 5.7):
停止MySQL
sudo service mysql stop
制作MySQL服务目录。
sudo mkdir /var/run/mysqld
授予MySQL用户写入服务目录的权限。
sudo chown mysql: /var/run/mysqld
手动启动MySQL,无需权限检查或联网。
sudo mysqld_safe --skip-grant-tables --skip-networking &
在另一个控制台上,不用密码登录。
mysql -uroot mysql
然后:
UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
EXIT;
关闭MySQL。
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
正常启动MySQL服务。
sudo service mysql start
第六种方法
更改MySQL root密码。
此方法将密码公开给命令行历史记录,这些命令应以root用户身份运行。
-
通过mysql命令行工具登录:
mysql -uroot -poldpassword
-
运行以下命令:
SET PASSWORD FOR root@'localhost' = PASSWORD('newpassword');
要么
-
运行以下命令,为当前用户设置密码(在这种情况下为’root’):SET PASSWORD = PASSWORD(‘newpassword’);
第七种方法
我遇到了ubuntu 18.04和mysql 5.7的问题,这是解决方案
在执行命令之前,尝试重新启动mysql-server
sudo service mysql restart
MYSQL-SERVER> = 5.7
sudo mysql -uroot -p
USE mysql;
UPDATE user SET authentication_string=PASSWORD('YOUR_PASSWORD') WHERE User='root';
UPDATE user SET plugin="mysql_native_password";
FLUSH PRIVILEGES;
quit;
MYSQL-SERVER< 5.7
sudo mysql -uroot -p
USE mysql;
UPDATE user SET password=PASSWORD('YOUR_PASSWORD') WHERE User='root';
UPDATE user SET plugin="mysql_native_password";
FLUSH PRIVILEGES;
quit;
第八种方法
如果您想更改MySQL的root密码,请在终端中输入:
sudo dpkg-reconfigure mysql-server-5.5
MySQL守护程序将停止,并提示您输入新密码。
第九种方法
这就像我为Ubuntu 16.04所做的魅力一样。当我从那里得到的时候,对下面的链接有充分的感谢。 [https://coderwall.com/p/j9btlg/reset-the-mysql-5-7-root-password-in-ubuntu-16-04-lts][1]
停止MySQL
sudo service mysql stop
制作MySQL服务目录。须藤mkdir /var /run /mysqld
授予MySQL用户写入服务目录的权限。
sudo chown mysql: /var/run/mysqld
手动启动MySQL,无需权限检查或联网。
sudo mysqld_safe --skip-grant-tables --skip-networking &
不使用密码登录。
mysql -uroot mysql
更新root用户的密码。确保通过以下查询至少更新了根帐户。进行一些选择并检查现有值(如果需要)
UPDATE mysql.user SET
authentication_string=PASSWORD('YOURNEWPASSWORD'),
plugin='mysql_native_password' WHERE User='root';
EXIT;
关闭MySQL。
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
正常启动MySQL服务。
sudo service mysql start
第十种方法
-
停止MySQL sudo服务mysql stop
-
制作MySQL服务目录。须藤mkdir /var /run /mysqld
-
授予MySQL用户写入服务目录的权限。须藤chown mysql:/var /run /mysqld
-
手动启动MySQL,无需权限检查或联网。须藤mysqld_safe –skip-grant-tables –skip-networking&
5.不使用密码登录。 mysql -uroot mysql
6.更新root用户的密码。
更新mysql.user SET authentication_string = PASSWORD(‘YOURNEWPASSWORD’),plugin = ‘mysql_native_password’ WHERE User = ‘root’ AND Host = ‘%’;出口;
-
关闭MySQL。 sudo mysqladmin -S /var/run/mysqld/mysqld.sock关闭
-
正常启动MySQL服务。 sudo服务mysql启动