这篇文章关于mysql用户根密码:
- 设置
- 改变
- 重置
一次又一次我见到这样的错误:
connect to server at ‘localhost’ failed error: ‘Access denied for user ‘root’@‘localhost’ (using password: YES)’.
这儿有快速解决篇:
快速解决篇
CentOS, Debian, Fedora, and Ubuntu适用。
- 方法1:第一次快速为root设置密码
如果你从来都没为mysql设置过密码,那么服务器不会允许用root用户连接mysql。
用mysqladmin -u root password newpass
。
如果你想更新密码为newpass,你需要下面这条:mysqladmin -u root -p password newpass
Enter password:
如果你得到:mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)'
那么跟着下面的指令看怎么恢复你的mysql密码:
这个单词password
是下面命令的例子中的一部分,不要替换成你的密码。这个单词newpass
是新密码。 - 一个可替代的mysqladmin的,当设置Mysql和MariaDB的是这条命令
mysql_secure_installation
.这条命令不会设置mysql旧和新的密码,而是做一些安全性的设置比如说:禁止测试数据库。
下面是怎么使用这条命令:mysql_secure_installation
按照下面的方式回答:
Change the root password? [Y/n] <-- y
New password: <-- Enter a new MySQL root password
Re-enter new password: <-- Repeat the MySQL root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y
上面是推荐回答,你也可以自有地选择你的回答如果你需要测试数据库或者数据库root用户远程接入时。note:你不需用PhPMyAdmin远程接入。
改变其他用户的mysql密码
改变普通用户的密码,你需要用mysqladmin -u user-name -p password newpass
user-name:你想改变密码的那个用户的用户名
newpass: 新密码
单词password
是不可以改变的,因此不要尝试去替换它。这条命令将要求输入旧密码。
- 方法2:更改密码
mysql软件在数据库mysql
表user
中存储了用户名和密码。你可以通过下面的方法直接更改密码:
1)先登录mysqlmysql -u root -p
2)使用mysql数据库use mysql;
3)对指定用户更新密码
mysql5.7.5和更早期版本:mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
mysql5.7.6和更新版本:mysql> SET PASSWORD FOR 'ENTER-USER-NAME-HERE'@'localhost' = PASSWORD("newpass");
4)刷新权限mysql> flush privileges;
mysql> quit
当你使用PHP或Perl脚本时使用。
恢复Mysql的根密码
你可以用下面的5步恢复mysql的密码:
1.kill掉mysql进程
2.开启mysql守护进程跟着--skip-grant-tables
选项,跳过输入密码环节。
3.用root用户连接到mysql服务器
4.设置一个新密码
5.退出和重启mysql服务器
这儿有一些命令需要敲对每一步来说(用root登录):
1>停止mysql服务service mysql stop
或者service mysqld stop
输出:Stopping MySQL database server: mysqld.
2>开启mysql服务没有密码mysqld_safe --skip-grant-tables &
输出:[1] 5988 Starting mysqld daemon with databases from /var/lib/mysql mysqld_safe[6025]: started
3>用mysql客户端连接到mysql服务器mysql -u root
输出:Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 56299 Server version: 5.6.34-1 (Debian)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
4>设置一个新的mysql用户密码
mysql5.75及早起版本:
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
mysql5.76及以后版本:
mysql> use mysql;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("newpass");
mysql> flush privileges;
mysql> quit
5>停掉mysql服务service mysql stop
输出:
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+ Done mysqld_safe --skip-grant-tables
否则用下面的命令,如果停掉mysql失败:killall mysqld
输出可能依照linux发行版不同而不同,别担心,开启mysql并进行测试:service mysql start
mysql -u root -p