如何重置或更改MySQL root密码?

asm*_*234 164 mysql ubuntu phpmyadmin

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

我也有一个phpmyadmin设置,phpmyadmin会自动更新吗?

Chr*_*ark 197

在Ubuntu Linux上设置/更改/重置MySQL root密码.在终端中输入以下行.

  1. 停止MySQL服务器: sudo /etc/init.d/mysql stop
  2. 启动mysqld配置: mysqld
  3. 以root身份登录MySQL: sudo mysqld --skip-grant-tables &
  4. 替换/var/run/mysqld为您的新密码:

    sudo mkdir -v /var/run/mysqld && sudo chown mysql /var/run/mysqld
    
    Run Code Online (Sandbox Code Playgroud)

注意:在某些版本上,如果sudo service mysql start列不存在,您可能需要尝试:
mysql -u root mysql

注意:此方法不被视为重置密码的最安全方式,但是,它可以工作.

参考文献:

  1. 在Ubuntu Linux上设置/更改/重置MySQL root密码
  2. 如何重置root密码

  • 我跟着到第3步,我得到无法连接到本地MySQL服务器通过套接字'/var/run/mysqld/mysqld.sock'(2)当我通过root登录 (51认同)
  • 当然,在这一点之后你需要杀死在步骤2中启动的临时无密码服务器进程.也许使用`sudo killall -9 mysqld`?然后`sudo service mysql start`重启正常的守护进程...... (18认同)
  • 在某些情况下,你还需要在步骤1和2之间运行`mkdir/var/run/mysqld`和`chown mysql:/ var/run/mysqld` (12认同)
  • 此答案中的方法仅用于重置您不知道的MySQL root密码[[source](http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html)] .如果您知道,那么"SET PASSWORD"MySQL指令适合您. (7认同)
  • 第3步对Ubuntu 18.04不起作用.我刚刚使用**sudo mysql**登录 (4认同)
  • 在5.7上不起作用。请看Anvesh的答案。 (2认同)
  • 对于任何努力执行这些声明的人。PASSWORD() 函数在最新版本的 mysql 中已被弃用,因此您需要执行类似的操作,例如 SHA1:`UPDATE mysql.user SETauthentication_string = SHA1('MYSECRETPASSWORD') WHERE User = 'root'; 同花顺特权;` (2认同)

use*_*345 98

在ubuntu服务器上重置root密码的官方简单方法...

如果你在16.04,14.04,12.04:

sudo dpkg-reconfigure mysql-server-5.5
Run Code Online (Sandbox Code Playgroud)

如果你在10.04:

sudo dpkg-reconfigure mysql-server-5.1
Run Code Online (Sandbox Code Playgroud)

如果您不确定安装了哪个mysql-server版本,可以尝试:

dpkg --get-selections | grep mysql-server
Run Code Online (Sandbox Code Playgroud)

更新了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;
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用以下内容:

sudo mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)

这将询问您关于保护安装的一系列问题(强烈推荐),包括您是否要提供新的root密码.

如果您不知道root密码,请参阅这个以Ubuntu为中心的过程.

查看更多信息:

https://help.ubuntu.com/16.04/serverguide/mysql.html https://help.ubuntu.com/14.04/serverguide/mysql.html

  • 在较新的ubuntu上似乎不适用于5.7 (21认同)
  • 适用于`Ver 14.14 Distrib 5.5.38,适用于debian-linux-gnu` (4认同)
  • sudo dpkg-reconfigure mysql-server-5.7不适用于Ubuntu 18.04以重置root密码.还有其他替补? (4认同)
  • 即使您丢失了原始的MySQL root密码也能正常工作 - 很好. (3认同)

nar*_*rko 95

唯一适用于我的方法是这里描述的方法(我正在运行ubuntu 14.04).为了清楚起见,这些是我遵循的步骤:

  1. sudo vim /etc/mysql/my.cnf
  2. 最后添加以下行:

    [mysqld]
    
    skip-grant-tables
  3. sudo service mysql restart

  4. mysql -u root

  5. use mysql

  6. select * from mysql.user where user = 'root';- 查看顶部以确定密码列是否称为 passwordauthentication_string

  7. UPDATE mysql.user set *password_field from above* = PASSWORD('your_new_password') where user = 'root' and host = 'localhost'; - 使用上面正确的密码栏

  8. FLUSH PRIVILEGES;

  9. exit

  10. sudo vim /etc/mysql/my.cnf

  11. 如果要保持安全标准,请删除步骤2中添加的行.

  12. sudo service mysql restart

供参考:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

  • 我必须运行UPDATE mysql.user SET authentication_string = PASSWORD('newpwd')WHERE User ='root'; 而是第5行. (9认同)
  • 最后,这对我有用!我在Ubuntu 16.04上运行MySQL 5.7.18.我尝试了dpkg-reconfigure,Anvesh的回答,Christian Mark的回答,甚至是MySQL帮助页面上的说明. (6认同)
  • 新版本的 MySQL 中不存在“PASSWORD”函数。 (3认同)
  • 唯一对我有用的解决方案。我有 Ubuntu 17.04 和 mysql 5.7 (2认同)

Anv*_*esh 76

我正在分享一步一步的最终解决方案,以重置Linux Ubuntu中的MySQL密码.

参考来自博客(dbrnd.com)

第1步:停止MySQL服务.

sudo stop mysql
Run Code Online (Sandbox Code Playgroud)

第2步:杀死所有正在运行的mysqld.

sudo killall -9 mysqld
Run Code Online (Sandbox Code Playgroud)

第3步:以安全模式启动mysqld.

sudo mysqld_safe --skip-grant-tables --skip-networking &
Run Code Online (Sandbox Code Playgroud)

第4步:启动mysql客户端

mysql -u root
Run Code Online (Sandbox Code Playgroud)

步骤5:成功登录后,请执行此命令更改密码.

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

第6步:您可以更新mysql root密码.

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Run Code Online (Sandbox Code Playgroud)

注意:在MySQL 5.7上,Password调用列authentication_string.

第7步:请执行此命令.

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

  • 这实际上对我有用,而不是接受的答案,试一试! (3认同)

fab*_*tag 66

什么对我有用(Ubuntu 16.04,mysql 5.7):

停止MySQL

sudo service mysql stop
Run Code Online (Sandbox Code Playgroud)

制作MySQL服务目录.

sudo mkdir /var/run/mysqld
Run Code Online (Sandbox Code Playgroud)

授予MySQL用户写入服务目录的权限.

sudo chown mysql: /var/run/mysqld
Run Code Online (Sandbox Code Playgroud)

手动启动MySQL,无需权限检查或联网.

sudo mysqld_safe --skip-grant-tables --skip-networking &
Run Code Online (Sandbox Code Playgroud)

在另一台控制台上,无需密码即可登录.

mysql -uroot mysql
Run Code Online (Sandbox Code Playgroud)

然后:

UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
EXIT;
Run Code Online (Sandbox Code Playgroud)

关闭MySQL.

sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
Run Code Online (Sandbox Code Playgroud)

正常启动MySQL服务.

sudo service mysql start
Run Code Online (Sandbox Code Playgroud)

  • 很有用 !在我的特定情况下(Ubuntu 18.04 LTS),我不得不将主机'%'替换为'localhost' (10认同)

Ami*_*rim 55

首先运行这个命令:

sudo mysql
Run Code Online (Sandbox Code Playgroud)

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

SELECT user,authentication_string,plugin,host FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

现在你已经可以看到这样的事情了:

+------------------+-------------------------------------------+-----------------------+-----------+
| 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 |
+------------------+-------------------------------------------+-----------------------+-----------+
Run Code Online (Sandbox Code Playgroud)

在上面的表格中,您可以看到您所有的 mysql 用户帐户状态以及您是否mysql_native_password在插件列中看到之前为 root 帐户设置了密码auth_socket。总而言之,要更改您的 root 密码,您应该运行:

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

Run Code Online (Sandbox Code Playgroud)

请务必将密码更改为您选择的强密码。然后为了重新加载您的服务器以使您的新更改生效,请运行此命令;

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

因此,通过以下命令再次检查您的 mysql 使用的身份验证方法:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

现在输出是:

+------------------+-------------------------------------------+-----------------------+-----------+
| 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 |
+------------------+-------------------------------------------+-----------------------+-----------+
Run Code Online (Sandbox Code Playgroud)

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

exit;
Run Code Online (Sandbox Code Playgroud)

就是这样。只是你应该重新启动mysql sudo service mysql restart。现在您可以使用您的密码轻松地以 root 帐户登录到 mysql。

  • 效果比魅力更好!它在 Ubuntu 上完美运行。 (3认同)

fai*_*gat 35

更改MySQL root密码.

此方法将密码公开给命令行历史记录,这些命令应以root身份运行.

  1. 通过mysql命令行工具登录:

    mysql -uroot -poldpassword
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行此命令:

    SET PASSWORD FOR root@'localhost' = PASSWORD('newpassword');
    
    Run Code Online (Sandbox Code Playgroud)

要么

  1. 运行此命令,为当前用户设置密码(本例中为"root"):

    SET PASSWORD = PASSWORD('newpassword');


Jer*_*iro 34

我遇到了ubuntu 18.04和mysql 5.7的问题,这就是解决方案

MYSQL-SERVER> = 5.7

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)


小智 12

如果您想更改MySQL root密码,请在终端中输入:

sudo dpkg-reconfigure mysql-server-5.5

MySQL守护程序将停止,系统将提示您输入新密码.

  • 我在Ubuntu 16.04上运行了sudo dpkg-reconfigure mysql-server-5.7,它没有提示输入新密码。 (2认同)

liz*_*ard 12

这就像我为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
Run Code Online (Sandbox Code Playgroud)

制作MySQL服务目录.sudo mkdir/var/run/mysqld

授予MySQL用户写入服务目录的权限.

sudo chown mysql: /var/run/mysqld
Run Code Online (Sandbox Code Playgroud)

手动启动MySQL,无需权限检查或联网.

sudo mysqld_safe --skip-grant-tables --skip-networking &
Run Code Online (Sandbox Code Playgroud)

无需密码即可登录.

mysql -uroot mysql
Run Code Online (Sandbox Code Playgroud)

更新root用户的密码.确保至少root帐户通过以下查询更新.如果您愿意,可以进行一些选择并检查现有值

UPDATE mysql.user SET 
authentication_string=PASSWORD('YOURNEWPASSWORD'), 
plugin='mysql_native_password' WHERE User='root';
EXIT;
Run Code Online (Sandbox Code Playgroud)

关闭MySQL.

sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
Run Code Online (Sandbox Code Playgroud)

正常启动MySQL服务.

sudo service mysql start
Run Code Online (Sandbox Code Playgroud)


小智 10

  1. 停止MySQL sudo服务mysql停止

  2. 制作MySQL服务目录. sudo mkdir/var/run/mysqld

  3. 授予MySQL用户写入服务目录的权限. sudo chown mysql:/ var/run/mysqld

  4. 手动启动MySQL,无需权限检查或联网. sudo mysqld_safe --skip-grant-tables --skip-networking&

5.无需密码登录. mysql -uroot mysql

6.更新root用户的密码.

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

  1. 关闭MySQL. sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown

  2. 正常启动MySQL服务. sudo服务mysql启动


kts*_*ipt 10

就我而言,此选项有帮助:https : //stackoverflow.com/a/49610152/13760371
谢谢你,拉胡尔。

除了接下来的那一刻,当我尝试输入命令时:

UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='%';
Run Code Online (Sandbox Code Playgroud)

控制台发出警告:

1681 'password' is deprecated and will be removed in a future release
Run Code Online (Sandbox Code Playgroud)

用这个命令治愈:

UPDATE mysql.user SET authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('NEWPASSWORD'))))), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
Run Code Online (Sandbox Code Playgroud)

MySQL 版本 5.7.X

我的变种:

1. > sudo service mysql stop
2. > sudo mkdir /var/run/mysqld
3. > sudo chown mysql: /var/run/mysqld
4. > sudo mysqld_safe --skip-grant-tables --skip-networking &
5. > mysql -uroot mysql
6. > UPDATE mysql.user SET authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('NEWPASSWORD'))))), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
7. > \q;
8. > sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
9. > sudo service mysql start
Run Code Online (Sandbox Code Playgroud)


jua*_*iza 9

这是我的解决方案.我在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'; 
Run Code Online (Sandbox Code Playgroud)

  • 较新版本的 MySQL 不支持“PASSWORD”函数。 (2认同)

Hus*_*yin 8

此解决方案属于以前版本的MySQL.通过使用套接字身份验证登录MySQL,您可以执行此操作.

sudo mysql -u root
Run Code Online (Sandbox Code Playgroud)

然后可以运行以下命令.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Run Code Online (Sandbox Code Playgroud)

详情请点击此处.

  • 我无法以 **`sudo mysql -u root`** 身份登录,但我能够以 **`sudo mysql`** 身份登录并运行 `ALTER USER` 命令。 (2认同)

Mas*_*lah 8

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

第1步

sudo systemctl stop mysql
Run Code Online (Sandbox Code Playgroud)

第2步

sudo systemctl edit mysql
Run Code Online (Sandbox Code Playgroud)

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

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid --skip-grant-tables --skip-networking
Run Code Online (Sandbox Code Playgroud)

第 3 步

sudo systemctl daemon-reload
sudo systemctl start mysql
Run Code Online (Sandbox Code Playgroud)

第四步

sudo mysql -u root
Run Code Online (Sandbox Code Playgroud)

第 5 步

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

第 6 步

UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHEREuser = 'root';
Run Code Online (Sandbox Code Playgroud)

第 7 步

UPDATE mysql.user SET plugin ='mysql_native_password' WHERE user = 'root';
Run Code Online (Sandbox Code Playgroud)

第 8 步

sudo systemctl revert mysql
Run Code Online (Sandbox Code Playgroud)

最后

sudo systemctl restart mysql
Run Code Online (Sandbox Code Playgroud)

现在享受


Fra*_*urt 6

回应rogerdpack的评论:如果您不知道MySQL root密码并且您不关心MySQL数据/设置,您可以重新安装它并重置root密码,如下所示:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo rm -rf /var/lib/mysql
sudo apt-get install -y mysql-server mysql-client 
Run Code Online (Sandbox Code Playgroud)

在安装过程中,您可以选择root用户的密码:

在此输入图像描述

  • 我希望我从这里开始,而不是浪费一个小时来试图重置密码. (2认同)

小智 5

如果您知道当前密码,则不必停止 mysql 服务器。打开 ubuntu 终端。使用以下命令登录 mysql:

mysql - username -p
Run Code Online (Sandbox Code Playgroud)

然后输入您的密码。这将带您进入 mysql 控制台。在控制台中,键入:

> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Run Code Online (Sandbox Code Playgroud)

然后使用以下方法刷新权限:

> flush privileges;
Run Code Online (Sandbox Code Playgroud)

然后你就完成了。