这篇文章关于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 newpassEnter password: 如果你得到:
    mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)' 那么跟着下面的指令看怎么恢复你的mysql密码:
    这个单词password是下面命令的例子中的一部分,不要替换成你的密码。这个单词newpass是新密码。
  • mysql 根用户 无密码 mysql的根密码_MySQL

  • 一个可替代的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软件在数据库mysqluser中存储了用户名和密码。你可以通过下面的方法直接更改密码:
    1)先登录mysql
    mysql -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 startmysql -u root -p