如何在Linux中重置MySQL或MariaDB root密码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Linux中重置MySQL或MariaDB root密码相关的知识,希望对你有一定的参考价值。
一.mysql密码的恢复方法之一如果忘记了MySQL的root密码,可以用以下方法重新设置:1.切换到root下suroot2.KILL掉系统里的MySQL进程;killall-TERMmysqld3.用以下命令启动MySQL,以不检查权限的方式启动;safe_mysqld--skip-grant-tables&4.然后用空密码方式使用root用户登录MySQL;mysql-uroot5.修改root用户的密码;mysql>updatemysql.usersetpassword=PASSWORD('123456')whereUser='root';mysql>flushprivileges;mysql>quit重新启动MySQL,就可以使用新密码登录了。二.MySQL密码的恢复方法二有可能你的系统没有safe_mysqld程序(ubuntu操作系统,apt-get安装的mysql),下面方法可以恢复1.切换到root下suroot2.停止mysqld;/etc/init.d/mysqlstop3.用以下命令启动MySQL,以不检查权限的方式启动;mysqld--skip-grant-tables&4.然后用空密码方式使用root用户登录MySQL;mysql-uroot4.修改root用户的密码为123456(当然,你需要将123456改成你要设置的密码);mysql>updatemysql.usersetpassword=PASSWORD('123456')whereUser='root';mysql>flushprivileges;mysql>quit重新启动MySQL/etc/init.d/mysqlrestart就可以使用新密码123456登录了。 参考技术A 1.用root登陆MySQL终端mysql>setpassword=password(‘raykaeso‘);mysql>flushprivileges;2.在MySQL终端中使用GRANT语句mysql>grantallon*.*to‘root’@’localhost’IDENTIFIEDBY‘raykaeso’withgrantoption;mysql>flushprivileges;3.在MySQL库user表中直接修改mysql>usemysql;mysql>updateusersetpassword=password(‘raykaeso’)whereuser=’root';mysql>flushprivileges;4、在shell命令行里修改MySQL用户密码[root@raykaesoleixuesong]mysqladmin-urootpassword“yourpassword”;参考:php程序员,雷雪松的个人博客MySQL:如何重置或更改 MySQL root 密码?
【中文标题】MySQL:如何重置或更改 MySQL root 密码?【英文标题】:MySQL: How to reset or change the MySQL root password? 【发布时间】:2021-04-05 04:03:50 【问题描述】:如何在 ubuntu 服务器中更改 MySQL root 密码和用户名?在设置任何更改之前我需要停止 mysql 服务吗?
我也有一个 phpmyadmin 设置,phpmyadmin 会自动更新吗?
【问题讨论】:
如果您不需要数据,您可以通过完全删除 mysql 来“重置”密码:***.com/questions/10853004/… 然后再次安装(它会提示您输入“新”root 密码) FWIW :) 你知道MySQL的root密码吗? 在 mysql-server-5.7 这些方法不起作用。如askubuntu.com/a/848504 所述,使用不带密码的“sudo” 提示:按“最旧”排序,然后查看最新答案。最受欢迎的答案在较新版本的 MySQL 中不起作用。 【参考方案1】:在 Ubuntu Linux 上设置/更改/重置 MySQL root 密码。在终端中输入以下行。
-
停止 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
:
对于 MySQL
UPDATE
mysql.user
SET
Password = PASSWORD('YOURNEWPASSWORD')
WHERE
User = 'root';
FLUSH PRIVILEGES;
exit;
注意:在某些版本中,如果
password
列不存在,您可能需要尝试:UPDATE user SET authentication_string=password('YOURNEWPASSWORD') WHERE user='root';
注意:此方法不被认为是最安全的密码重置方法,但它确实有效。
对于 MySQL >= 8.0
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';
参考资料:
-
Set / Change / Reset the MySQL root password on Ubuntu Linux
How to Reset the Root Password (v5.6)
How to Reset the Root Password (v8.0)
【讨论】:
当然,在此之后,您需要终止在步骤 2 中启动的临时无密码服务器进程。也许使用sudo killall -9 mysqld
?然后sudo service mysql start
重启正常的守护进程...
此答案中的方法仅用于重置您不知道的 MySQL root 密码[source]。如果你知道的话,SET PASSWORD
MySQL 指令就是给你的。
我一直到第三步,当我通过 root 登录时,我得到 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
在某些情况下,您还需要在第 1 步和第 2 步之间运行mkdir /var/run/mysqld
和chown mysql: /var/run/mysqld
第 3 步不适用于 Ubuntu 18.04。我刚刚使用 sudo mysql 登录【参考方案2】:
1.打开nano/vim创建一个文件,内容如下并将文件另存为~/mysql-pwd
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';
-
停止mysql
sudo systemctl stop mysql
运行sudo mysqld -init-file=~/mysql-pwd
重启mysqlsudo systemctl start mysql
现在登录mysql -u root -p
。密码将是您的NEWPASSWORD
【讨论】:
【参考方案3】:在我的情况下,这个选项有帮助:https://***.com/a/49610152/13760371 谢谢你,拉胡尔。
除了以下时刻,当我尝试输入命令时:
UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='%';
控制台发出警告:
1681 'password' is deprecated and will be removed in a future release
用这个命令治愈:
UPDATE mysql.user SET authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('NEWPASSWORD'))))), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
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
【讨论】:
谢谢,这对我在 Ubuntu 20.04 上的 MySQL 8.0 有效 好的,弗利姆。乐于助人。 这对我有用。但在第一步 mysql stop 对我不起作用我必须使用mysqladmin shutdown
并且我不需要步骤 2 和 3,因为该文件存在。【参考方案4】:
首先运行这个命令:
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 用户帐户状态以及如果您在插件列中看到 mysql_native_password
而不是 auth_socket
之前为 root 帐户设置了密码。
总而言之,为了更改您的 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 |
+------------------+-------------------------------------------+-----------------------+-----------+
正如您在授权表中看到的,您的 root 帐户拥有 mysql_native_password
.
现在你可以退出 MYSQL shell
exit;
就是这样,你应该通过sudo service mysql restart
重启mysql。
现在您可以使用密码轻松地以 root 帐户登录 mysql。
【讨论】:
我认为这是来自 DigitalOcean,这是在 Virtual Box 上运行的 Ubuntu 18.04 上唯一适用于我的解决方案 这是其他投票支持 Ubuntu OS (y) 的正确答案 这应该是公认的答案【参考方案5】:关于这个话题的大部分答案都已经过时了;在撰写本答案之前,MySQL 发生了两个重大变化:
1- 用户表中的“密码”字段已替换为“身份验证字符串”列。
2- 'Password' 加密功能:PASSWORD("of some text") 已弃用。
请参考此链接了解更多information:dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html
【讨论】:
【参考方案6】:我还没有看到MySQL 8.0 guide 推荐的官方步骤,这是唯一对我有用的步骤。以下是这些步骤的摘要。
如果 MySQL 服务器正在运行,请停止它。查看/var/lib/mysql/
、/var/run/mysqld/
或/usr/local/mysql/data/
以查找带有服务器进程ID 的pid 文件。通常,该文件以 mysqld 或您系统的主机名开头并以 .pid 结尾。
在以下命令中替换您刚刚找到的mysql-data-directory
和host_name
:
$ sudo kill `sudo cat /mysql-data-directory/host_name.pid`
此命令将使用 SQL 语句在/tmp/mysql-init
中创建一个文本文件,并使 mysql 用户成为所有者。用您自己的密码替换命令MyNewPass
。
$ echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';" > /tmp/mysql-init && sudo chown mysql /tmp/mysql-init
通过在命令行上运行以下命令来启动 MySQL 服务器。在此之后密码被更新,您可以使用CTRL+C
再次关闭服务器。
$ sudo mysqld --user=mysql --init-file=/tmp/mysql-init &
使用您的密码删除临时文件:
$ sudo rm /tmp/mysql-init
【讨论】:
【参考方案7】:如果您知道“root”用户密码,请使用该凭据登录 mysql。然后执行以下查询来更新密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
【讨论】:
【参考方案8】:我遇到了 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
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;
【讨论】:
谢谢,我也在这里运行 Ubuntu 18.04,MYSQL-SERVER >= 5.7
版本是唯一真正解决问题的方法
这是适用于 Ubuntu 18.04 mysql 安装的那个。 MYSQL-SERVER >= 5.7
准确地说是版本。
更新用户 SET 密码=PASSWORD('YOUR_PASSWORD') WHERE User='root'; ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '('YOUR_PASSWORD') WHERE User='root'' 附近使用正确的语法
谢谢,我运行的是 Ubuntu 18.04 和 MYSQL-SERVER = 5.7,它适用于我【参考方案9】:
设置 MySQL 密码
-
停止 MySQL 数据库服务
sudo /etc/init.d/mysql 停止
-
新建一个mysqld目录
sudo mkdir /var/run/mysqld/
-
授予 mysql 用户访问权限
sudo chown mysql /var/run/mysqld/
-
以安全模式启动 MySQL...
sudo mysqld_safe --skip-grant-tables &
-
不用密码登录数据库服务器
sudo mysql -u root
-
使用默认的mysql数据库
使用mysql;
-
修改root密码
update user set authentication_string=PASSWORD("New_Passwore_Here") where
User='root';
保存更改
刷新权限; 退出;
停止 MySQL 安全模式并启动 MySQL 默认服务
sudo /etc/init.d/mysql 停止
sudo /etc/init.d/mysql 启动
-
使用 root 新密码重新登录 MySQL 数据库
sudo mysql -u root -p
*** 来源:https://websiteforstudents.com/resetting-mysql-root-password-on-ubuntu-16-04-17-10-and-18-04-lts/
【讨论】:
较新版本的 MySQL 不支持PASSWORD
函数。
它与接受的答案有何不同?【参考方案10】:
对于 Ubuntu 18.04 和 mysql 版本 14.14 Distrib 5.7.22,请按照以下步骤重置 mysql 密码。
第一步
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
第三步
sudo systemctl daemon-reload
sudo systemctl start mysql
第四步
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
现在享受
【讨论】:
我认为您错过了第 2 步的内容。它不完整。 较新版本的 MySQL 不支持PASSWORD
函数。【参考方案11】:
你可以使用这个命令:
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
之后请使用flush:
FLUSH PRIVILEGES;
【讨论】:
【参考方案12】:什么对我有用(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
【讨论】:
其他方法对我不起作用,但这个(谢谢!),或者你也可以去这里rricketts.com/reset-root-password-mysql-5-7-ubuntu-16-04-lts 非常有用!在我的特定情况下(Ubuntu 18.04 LTS),我必须将主机 '%' 替换为 'localhost' 这在 ubuntu 18.04 中不起作用。但它适用于这里描述的这个小变化***.com/a/53385753/1591143 较新版本的 MySQL 不支持PASSWORD
函数。
完美运行【参考方案13】:
更改 MySQL 根密码。以更简单的方式
所有这些命令都应该以 root 身份运行。
使用旧密码通过 MySQL 命令行工具登录:
第 1 步
mysql -uroot -p"your_old_password"
然后运行以下命令:
第二步
SET PASSWORD FOR root@'localhost' = PASSWORD('your_new_password');
方法2(首次使用旧密码登录,使用上述命令)
运行此命令,为当前用户设置密码:
SET PASSWORD = PASSWORD('your_new_password');
以上命令是针对当前用户的。如果要更改其他用户的密码,可以输入用户名而不是“root”。
【讨论】:
【参考方案14】:这就像我为 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 服务目录。 sudo mkdir /var/run/mysqld
授予 MySQL 用户写入服务目录的权限。
sudo chown mysql: /var/run/mysqld
手动启动 MySQL,无需权限检查或联网。
sudo mysqld_safe --skip-grant-tables --skip-networking &
无需密码即可登录。
mysql -uroot mysql
更新 root 用户的密码。 确保至少 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
【讨论】:
【参考方案15】:这就是我的解决方案。我在 Ubuntu 18.04 工作: https://***.com/a/46076838/2400373
但是最后一步的这个变化很重要:
UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
【讨论】:
天哪!非常感谢!这是在我的情况下工作的唯一方法。忘记那个愚蠢的安全安装脚本,因为它让我新安装的 5.7 对用户完全开放,而无需询问密码……如果 Linux/Ubuntu 是为有安全意识的用户而设计的,为什么保护像 MySQL 服务器这样的关键应用程序这么难? 较新版本的 MySQL 不支持PASSWORD
函数。【参考方案16】:
正如password() function 上的 mysql 文档所说:
这个函数在 MySQL 8.0.11 中被移除了。
这几乎使 mysql v8.0.11 和更高版本的所有现有答案无效。
根据 mysql 文档,new generic way to reset the root password 如下:
前面的部分提供了密码重置说明 专门用于 Windows 和 Unix 以及类 Unix 系统。 或者,在任何平台上,您都可以使用 mysql 客户端(但这种方法不太安全):
必要时停止 MySQL 服务器,然后使用 --skip-grant-tables 选项。这使任何人都可以在没有密码和所有权限的情况下进行连接,并禁用帐户管理 ALTER USER 和 SET PASSWORD 等语句。因为这是 不安全,如果服务器以 --skip-grant-tables 启动 选项,它会自动启用 --skip-networking 以防止远程 连接。
使用mysql客户端连接MySQL服务器;没有密码是 必要的,因为服务器是用 --skip-grant-tables 启动的:
shell> mysql
在 mysql 客户端中,告诉服务器重新加载授权表,以便帐户管理语句起作用:
mysql> FLUSH PRIVILEGES;
然后修改'root'@'localhost'账户密码。将密码替换为您要使用的密码。 更改具有不同主机名的 root 帐户的密码 部分,修改说明以使用该主机名。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
您现在应该能够使用 root 用户连接到 MySQL 服务器 新密码。停止服务器并正常重新启动它(没有 --skip-grant-tables 和 --skip-networking 选项)。
【讨论】:
这些说明不适用于 Ubuntu 19.10 上的 mysqld 版本 8.0.19。当我使用 --skip-grant-tables 选项时,未创建 mysqld 套接字。如果您处于相同的情况,请在此处查看我的回答***.com/a/60386378/12559612 感谢您的回答,与旧答案的组合对我有用:sudo service mysql stop sudo mkdir /var/run/mysqld sudo chown mysql: /var/run/mysqld sudo mysqld_safe --skip-grant-tables --skip-networking &
在另一个控制台中:mysql -uroot mysql ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; systemctl restart mysql
【参考方案17】:
这个解决方案属于以前版本的MySQL。 使用socket认证登录MySQL即可。
sudo mysql -u root
然后可以运行以下命令。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
详情请见here。
【讨论】:
我无法以sudo mysql -u root
身份登录,但我能够以 sudo mysql
身份登录并运行ALTER USER
命令。
我收到此错误:“您的密码不符合当前的政策要求”。我可以在这里纠正这个问题:***.com/a/43094873/9073437。设置修改后的密码策略后,一切正常。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; ERROR 1290 (HY000): MySQL 服务器使用 --skip-grant-tables 选项运行,因此无法执行此语句【参考方案18】:
唯一对我有用的方法是here 描述的方法(我正在运行 ubuntu 14.04)。为了清楚起见,这些是我遵循的步骤:
sudo vim /etc/mysql/my.cnf
在末尾添加以下几行:
[mysqld] 跳过授予表
sudo service mysql restart
mysql -u root
use mysql
select * from mysql.user where user = 'root';
- 查看顶部判断是否调用了密码列
密码 或 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
【讨论】:
最后,这对我有用!我在 Ubuntu 16.04 上运行 MySQL 5.7.18。我尝试了 dpkg-reconfigure、Anvesh 的回答、Christian Mark 的回答,甚至是 MySQL 帮助页面上的说明。 我必须运行 UPDATE mysql.user SET authentication_string=PASSWORD('newpwd') WHERE User='root';而不是第 5 行。 唯一对我有用的解决方案。我有 Ubuntu 17.04 和 mysql 5.7 很遗憾这对我不起作用 mysql 5.7.22 ubuntu 18.04 一切都按预期工作。但是当尝试登录时它说输入密码:错误1698(28000):用户'root'@'localhost'的访问被拒绝【参考方案19】:停止 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 &
5.无密码登录。 mysql -uroot mysql
6.更新root用户密码。
UPDATE 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 service mysql start
【讨论】:
嗨,这个答案对我有用,但我不得不使用另一个命令:UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';
没有AND Host='%'
。谢谢!【参考方案20】:
您可以尝试这些步骤来重置 mysql 5.7 root 密码:
第一次停止Mysql服务
sudo /etc/init.d/mysql stop
以root身份登录,无需密码
sudo mysqld_safe --skip-grant-tables
&
登录mysql终端后,您应该需要执行更多命令:
use mysql;
UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';
flush privileges;
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
重启你的mysql服务器后 如果您仍然遇到错误,您必须访问: Reset MySQL 5.7 root password Ubuntu 16.04
【讨论】:
【参考方案21】:你不需要这一切。只需登录:
mysql -u root -p
然后将当前用户的密码修改为mysql>
提示符:
mysql> set password=password('the_new_password');
mysql> flush privileges;
【讨论】:
这是最简单的方法!它适用于我的 mysql 5.7.21-0ubuntu0.17.10.1 较新版本的 MySQL 不支持PASSWORD
函数。【参考方案22】:
要更新“root”Mysql 用户密码,您必须记住您需要超级用户权限。如果您有超级用户权限,请尝试以下命令:
MySQL 5.7.6 及更高版本
sudo su
service mysql stop
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
\q;
exit
mysql -u root -p MyNewPass
MySQL 5.7.5 及更早版本
sudo su
service mysql stop
mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
\q;
exit
mysql -u root -p MyNewPass
【讨论】:
【参考方案23】:我不得不在 Ubuntu 16.04.1 LTS 上走这条路。它有点混合了上面的其他一些答案 - 但它们都没有帮助。我花了一个小时或更长时间尝试从 MySql 网站到 SO 上的所有其他建议,我终于得到了它:
注意: 虽然它显示输入 root 用户密码,但我没有原始密码,所以我只输入了相同的密码以用作新密码。
注意:没有/var/log/mysqld.log 只有/var/log/mysql/error.log
另请注意,这对我不起作用:
sudo dpkg-reconfigure mysql-server-5.7
也没有:
sudo dpkg-reconfigure --force mysql-server-5.5
制作 MySQL 服务目录。
sudo mkdir /var/run/mysqld
授予 MySQL 用户写入服务目录的权限。
sudo chown mysql: /var/run/mysqld
那么:
-
杀死当前的mysqld pid
使用 sudo /usr/sbin/mysqld & 运行 mysqld
运行 /usr/bin/mysql_secure_installation mysql_secure_installation 的输出
root@myServer:~# /usr/bin/mysql_secure_installation
保护 MySQL 服务器部署。
输入root用户密码:
VALIDATE PASSWORD PLUGIN 可用于测试密码 并提高安全性。它检查密码的强度 并允许用户只设置那些密码 足够安全。您要设置验证密码插件吗?
按 y|Y 表示是,任何其他键表示否:否 使用现有的 root 密码。 更改root密码? (((按 y|Y 表示是,任何其他键表示否):y
新密码:
重新输入新密码: 默认情况下,MySQL 安装有一个匿名用户, 允许任何人无需登录 MySQL 为他们创建的用户帐户。这仅适用于 测试,并使安装更顺畅。 您应该在进入生产之前删除它们 环境。
删除匿名用户? (按 y|Y 表示是,任何其他键表示否):y 成功。
通常情况下,应该只允许 root 从 '本地主机'。这确保了有人无法猜测 来自网络的root密码。
远程禁止root登录? (按 y|Y 表示是,任何其他键表示否):y 成功。
默认情况下,MySQL 带有一个名为“test”的数据库 任何人都可以访问。这也仅用于测试, 并且应该在进入生产之前被删除 环境。
删除测试数据库并访问它? (按 y|Y 表示是,任何其他键表示否):y
正在删除测试数据库... 成功。
正在删除测试数据库的权限... 成功。
重新加载权限表将确保所有更改 到目前为止所做的将立即生效。
现在重新加载权限表? (按 y|Y 表示是,任何其他键表示否):y 成功。
全部完成!
【讨论】:
【参考方案24】:呼应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
在安装过程中,可以选择root的密码:
【讨论】:
我希望我从这里开始,而不是浪费一个小时来尝试重设密码。【参考方案25】:要重置或更改密码,请输入sudo dpkg-reconfigure mysql-server-X.X
(XX 是您安装的 mysql 版本,即 5.6、5.7),然后您将提示您必须设置新密码的屏幕,然后在下一步中确认密码和稍等片刻。就是这样。
【讨论】:
【参考方案26】:在 ubuntu 服务器上重置 root 密码的官方简单方法...
如果您在 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
【讨论】:
即使您丢失了原始的 MySQL 根密码也可以使用 - 很好。 与Ver 14.14 Distrib 5.5.38, for debian-linux-gnu
一起工作
还使用了 mysql v 5.0...sudo dpkg-reconfigure mysql-server-5.0
sudo dpkg-reconfigure mysql-server-5.7 不适用于 Ubuntu 18.04 重置 root 密码。还有其他替代品吗?
Ubuntu:sudo dpkg-reconfigure mysql-server-5.7; sudo mysql_secure_installation
【参考方案27】:
如果您知道当前密码,则不必停止 mysql 服务器。 打开 ubuntu 终端。 使用以下命令登录 mysql:
mysql - username -p
然后输入您的密码。 这将带您进入 mysql 控制台。 在控制台中,输入:
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
然后使用以下方法刷新权限:
> flush privileges;
那么你就完成了。
【讨论】:
ERROR 1290 (HY000): MySQL 服务器使用 --skip-grant-tables 选项运行,因此无法执行此语句【参考方案28】:对于 mysql 5.6,此命令有效,您可以通过向导设置密码:
sudo dpkg-reconfigure mysql-server-5.6
【讨论】:
我试过了,但它不工作..我得到这个波纹管错误..你能帮忙吗?本次安装的 MySQL 已经升级到 5.7.21,如果还需要运行 mysql_upgrade 使用 --force 【参考方案29】:在更改/重置 MySQL 密码时,上面列出的以下命令没有帮助。我发现进入终端并使用这些命令毫无意义。而是使用命令 sudo stop everything。如果有帮助,请删除 Windows 系统 32。
【讨论】:
问题是关于ubuntu
操作系统而不是 Windows。 DELETE SYSTEM 32 for windows 是什么意思?【参考方案30】:
如果部署在 xampp 上,您可以通过提供的 phpadmin gui 轻松更改 mysql 密码。
phpMyAdmin -> User Accounts -> Edit Privileges (Select the intended user) -> Change Password (Tab)
【讨论】:
以上是关于如何在Linux中重置MySQL或MariaDB root密码的主要内容,如果未能解决你的问题,请参考以下文章