MySQL初始化配置

MySQL初始化配置刚安装完成 MySQL 后 在进入 MySQL 时 总是有错误提示 mysql uroot pEnterpasswo ERROR1045 28000 Accessdenied root localhost usingpasswor NO 或者 mysql uroot ppassword newpassword E


MySQL初始化配置

刚安装完成MySQL后,在进入MySQL时,总是有错误提示:

$ mysql -u root -p 
Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 

或者

$ mysql -u root -p password 'newpassword' 
Enter password: mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)' 

解决方案1(推荐):

为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log
可以通过命令获取MySQL的临时密码:

$ grep "temporary password" /var/log/mysqld.log 
2018-09-05T03:35:49.Z 1 [Note] A temporary password is generated for root@localhost: sdr>HGs 
   
     t 
   
mysql> set password = password(''); ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
mysql> set global validate_password_policy=0; Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password_length=1; Query OK, 0 rows affected (0.00 sec) 

然后设置密码:

mysql> SET PASSWORD = PASSWORD('your new password'); Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 

至此重置密码也就算是完了,你可以使用新设置的密码去登录试试。

解决方案2:

# /etc/init.d/mysql start # /etc/init.d/mysql stop 

启动成功后查看mysql进程信息,获取mysqld_safe的安装目录(非常关键):

# ps -ef | grep -i mysql 
root 6013 4243 0 14:56 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables mysql 6151 6013 0 14:56 pts/1 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock root 6195 4243 0 15:14 pts/1 00:00:00 grep -i mysql 

可以看到mysqld_safe的安装位置:/usr/bin/
接着执行一下命令停止mysql:

# /etc/init.d/mysql stop 

以安全方式启动mysql:

# /usr/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 & 

稍等5秒钟,然后执行以下语句:

# /usr/bin/mysql -u root mysql 

MySQL 5.7.5以前的版本

mysql> update user set authentication_string = Password('') where User = 'root'; 

回车后执行(刷新MySQL系统权限相关的表):

mysql> flush privileges; 
Query OK, 1 row affected, 1 warning (0.15 sec) Rows matched: 1 Changed: 1 Warnings: 1 

再执行exit退出:

mysql> exit; 

退出后,使用以下命令登陆mysql,试试是否成功:

# mysql -u root -p 

按提示输入密码:

进入后重新设置一次密码:

mysql> SET PASSWORD = PASSWORD(''); 
Query OK, 0 rows affected (0.03 sec) 

然后就能正常操作了。

MySQL 5.7.6以后的版本
MySQL 5.7.6 以后废弃了 user 表中的 password 字段和 password() 方法,所以使用旧的方法去重置密码对 mysql 8.0 是不行的!

先将默认的密码置空:

mysql> use mysql; mysql> update user set authentication_string='' where user='root'; 

再执行exit退出:

mysql> exit; 

执行ps -ef | grep 'mysql'查看正在运行的mysql相关进程pid,kill -9结束掉。

接着执行一下命令启动mysql:

# /etc/init.d/mysql start 

重新登录到 MySQL 上

# mysql -u root -p 
mysql> ALTER user 'root'@'localhost' IDENTIFIED BY 'Abc123@'; 

其中 Abc123@为你设置的新密码,执行完之后会提示你 OK 的话,就代表修改成功了,至此重置密码也就算是完了,你可以使用新设置的密码去登录试试。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226619.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午10:31
下一篇 2026年3月16日 下午10:31


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号