centos7安装完mysql5.7.29访问报错解决办法

最近在研究Django和mysql的交互,在本地安装了一个mysql,结果安装完兴致勃勃想登录,结果却失败了。这里记录下问题解决的过程。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

报错现象

刚安装完mysql5.7,已经成功启动mysqld服务,访问mysql报错如下

[fuhx@testmachine Downloads]$ mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

看样子似乎是权限有问题,但是我明明记得mysql刚安装完是没有密码的啊,非常奇怪

解决问题

找到mysql的配置文件/etc/my.cnf在其中的[mysqld]部分加入skip-grant-tables,如下

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

这样就暂时关闭了鉴权,重启一下mysqld服务

[root@testmachine mysql57-community]# systemctl restart mysqld

再次尝试登陆进去,成功

[root@testmachine mysql57-community]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.29 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, 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>

然后修改一下root用户的密码

flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';

然后退出mysql,删除掉刚才加入到配置的skip-grant-tables行,再次重启mysqld

[root@testmachine mysql57-community]# systemctl restart mysqld

之后就可以用刚才设置的密码登录了

[fuhx@testmachine Downloads]$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.29 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, 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>

你可能感兴趣的:(Linux疑难杂症)