如何在CentOS7上更改MySQL根帐户密码?

watbbzwu  于 2022-11-07  发布在  Mysql
关注(0)|答案(7)|浏览(154)

我已经在Centos7虚拟机上安装了mySQL,但使用root用户登录时遇到问题。我尝试了不使用密码登录或使用任何默认密码登录(像MySQL一样,admin etc)我看了我的.cnf文件,没有密码。我试图通过停止服务并使用mysqld_safe --skip-grant-tables &重新启动来更改密码,但我得到了mysqld_safe:command not found,我不知道还能做什么。任何提示/我们将不胜感激!

093gszye

093gszye1#

您使用的是什么版本的MySQL?我使用的是5.7.10,以root身份登录时也遇到了同样的问题
有两个问题:无法以root身份登录,也无法使用mysqld_safe启动MySQL以重置root密码。
我不知道如何在安装过程中设置root密码,但下面介绍了如何重置root密码

编辑安装时的初始root密码可以通过运行

grep 'temporary password' /var/log/mysqld.log

http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
1.现在使用systemd而不是mysqld_safe来处理mySQL(这就是为什么您会得到-bash: mysqld_safe: command not found错误-它没有安装)

  1. user表结构已更改。
    因此,要重置root密码,您仍然使用--skip-grant-tables选项启动mySQL,并更新user表,但操作方式已经改变。
1. Stop mysql:
sudo systemctl stop mysqld

2. Set the mySQL environment option 
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

3. Start mysql usig the options you just set
sudo systemctl start mysqld

4. Login as root
mysql -u root

5. Update the root user password with these mysql commands
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')
    -> WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

***Edit***

As mentioned my shokulei in the comments, for 5.7.6 and later, you should use 
   mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Or you'll get a warning

6. Stop mysql
sudo systemctl stop mysqld

7. Unset the mySQL envitroment option so it starts normally next time
sudo systemctl unset-environment MYSQLD_OPTS

8. Start mysql normally:
sudo systemctl start mysqld

Try to login using your new password:
7. mysql -u root -p

参考资料

就像http://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html上说的,

备注

从MySQL 5.7.6开始,对于使用RPM分发版的MySQL安装,服务器的启动和关闭在多个Linux平台上由systemd管理。在这些平台上,不再安装mysqld_safe,因为它是不必要的。有关详细信息,请参见第2.5.10节“使用systemd管理MySQL服务器”。
它会将您带到http://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html,在页面底部提到了systemctl set-environment MYSQLD_OPTS=
密码重置命令位于http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html的底部

2lpgd968

2lpgd9682#

我使用了上面Kevin Jones的建议,并给出了以下建议--跳过网络更改以获得更好的安全性:

sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"

[user@machine ~]$ mysql -u root

然后,当我试图重置密码时,我收到了一个错误,但在谷歌上搜索其他地方时,我发现我可以继续前进。

mysql> select user(), current_user();
+--------+-----------------------------------+
| user() | current_user()                    |
+--------+-----------------------------------+
| root@  | skip-grants user@skip-grants host |
+--------+-----------------------------------+
1 row in set (0.00 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'sup3rPw#'
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'sup3rPw#'
Query OK, 0 rows affected (0.08 sec)

mysql> exit
Bye
[user@machine ~]$ systemctl stop mysqld
[user@machine ~]$ sudo systemctl unset-environment MYSQLD_OPTS
[user@machine ~]$ systemctl start mysqld

在那一点上,我能够登录。

iyfamqjs

iyfamqjs3#

使用以下步骤重置密码。

$ sudo systemctl start mysqld

重置MySql服务器根密码。

$sudo grep 'temporary password' /var/log/mysqld.log

输出类似于-:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

在重置mysql_secure_installation过程中使用上述密码。

<pre>
    $ sudo mysql_secure_installation
</pre>
   Securing the MySQL server deployment.

   Enter password for user root:

您已经成功重置了MySql Server的root密码。使用以下命令检查mysql Server是否连接。

$ mysql -u root -p

http://gotechnies.com/install-latest-mysql-5-7-rhelcentos-7/

pkwftd7m

pkwftd7m4#

对于CentOS 7MariaDB 10.4,我成功地使用了以下命令:

su -
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --user=mysql"
systemctl restart mariadb
mysql -u root

flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
flush privileges;
quit

systemctl unset-environment MYSQLD_OPTS
systemctl restart mariadb
tktrz96b

tktrz96b5#

所有人,
这里有点扭曲与mysql-community-server 5.7我分享一些步骤,如何重置mysql5.7根密码或设置密码.它将工作centos7和RHEL 7以及.
步骤1.停止数据库
/etc/my.cnf
步骤2.修改/etc/my.cnf文件,添加“skip-grant-tables”

vi /etc/my.cnf
[mysqld]
skip-grant-tables

步骤3.启动MySQL
service mysqld start
步骤4.选择mysql默认数据库

mysql -u root

mysql>use mysql;

步骤4.设置新密码
mysql> update user set authentication_string=PASSWORD("yourpassword") where User='root' ;
步骤5.从/etc/my.cnf文件中删除skip-grant-tables
步骤6.重新启动mysql数据库

service mysqld restart

mysql -u root -p

享受:)

pgpifvop

pgpifvop6#

请使用以下命令停止所有服务MySQL/etc/init.d/mysqld stop之后使用此命令
mysqld_safe --跳过授权表
它可能工作正常

trnvg8h3

trnvg8h37#

对我来说这样工作:1.停止mysql:systemctl停止mysqld
1.设置mySQL环境选项systemctl set-environment MYSQLD_OPTS="--跳过-授予-表”
1.启动mysql使用您刚刚设置的选项systemctl start mysqld
1.以root身份登录mysql -u root
1.登录后我使用FLUSH PRIVILEGES;告诉服务器重新加载授权表,以便帐户管理语句正常工作。如果我不这样做,我会在尝试更新密码时收到以下错误:“在用户表中找不到任何匹配行”

相关问题