我在Centos7虚拟机上安装了mySQL,但是我在使用root登录时遇到了问题。我尝试登录没有密码或尝试任何默认的(如mysql,管理员等)我查看my.cnf文件,没有密码。我尝试通过停止服务并使用mysqld_safe --skip-grant-tables &
重新启动密码来更改密码,但我得到了mysqld_safe:command not found
我不知道还能做什么。任何提示/想法将不胜感激!
您使用的是哪个版本的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
systemd
现在用来照顾mySQL而不是mysqld_safe
(这就是为什么你得到-bash: mysqld_safe: command not found
错误 - 它没有安装)user
表结构已经改变。因此,要重置root密码,您仍然可以使用--skip-grant-tables
选项启动mySQL并更新user
表,但是如何更改它。
1. Stop mysql:
systemctl stop mysqld
2. Set the mySQL environment option
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
3. Start mysql usig the options you just set
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
systemctl stop mysqld
7. Unset the mySQL envitroment option so it starts normally next time
systemctl unset-environment MYSQLD_OPTS
8. Start mysql normally:
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安装,服务器启动和关闭由systemd在几个Linux平台上管理。在这些平台上,不再安装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的底部
使用以下步骤重置密码。
$ sudo systemctl start mysqld
重置MySql服务器root密码。
$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服务器连接与否。
$ mysql -u root -p
http://gotechnies.com/install-latest-mysql-5-7-rhelcentos-7/
我使用上面的凯文琼斯的建议与以下--skip-networking更改,以获得更好的安全性:
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
那时我能够登录。
所有,
这里有一点点用mysql-community-server 5.7我分享一些步骤,如何重置mysql 5.7 root密码或设置密码。它将工作在centos 7和RHEL 7。
步骤1。第一次停止数据库
service mysqld stop
第2步。第二次修改/etc/my.cnf文件添加“skip-grant-tables”
vi /etc/my.cnf
[mysqld] skip-grant-tables
第3步。第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'
;
step5重启mysql数据库
service mysqld restart
mysql -u root -p
请享用 :)
请使用以下命令停止所有服务MySQL /etc/init.d/mysqld stop使用它之后
mysqld_safe --skip-grant-tables
它可能正常工作
对我来说这样工作:1。停止mysql:systemctl stop mysqld