CentOS 7安装MYSQL5.7(access denied问题解决方法)

      题记——前几天,想要用CentOS7搭建一个LAMP开发环境,在安装到MYSQL5.7时,遇到了各种问题,,尤其是access denied for root@localhost,困扰了我好久。在各种百度、谷歌以及官方文档后,终于搞成了。所以分享给大家,少走弯路。

安装过程以及遇到的问题如下:

一、下载安装MYSQL5.7

1. 进入MYSQL官网下载官方yum源。因为CentOS7推荐使用的数据库变为了mariadb,所以官方yum源中也就没有了MYSQL的rpm包,故我们首先要下载安装MYSQL的官方yum源,rpm -ivh 下载的rmp包


2.yum安装MYSQL。
   yum install mysql
yum install mysql-community-server
yum install mysql-community-client
yum install mysql-community-devel
此时理论上,MYSQL应该安装好了,但是可能会出现下面的问题

二、MYSQL报错“access denied for user root@localhost”

MYSQL出现这样的问题,是因为MYSQL5.6之后,加强了对安全性的管控,认为root用户进行mysql操作是一种危险的行为,于是限制了root用户登录mysql()。但是我们可以通过修改Mysql中user表的方法解决该问题
(网络上还有一种做法是查看/var/log/mysql.log,该文件内有安装后Mysql生成的随机密码,然后用文件里的密码正常登录即可,读者可以试下)
1.首先要忽略掉权限验证表进入mysql
①非RHEL7.0系列的发行版执行下面的命令
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
②RHEL7.0系列的发行版(例如CentOs 7),特征是使用了systemd来代替原有的init,作为第一支启动的程序。此时网络上面所说的mysqld_secure已经不可使用。但是查看官方文档后,得知在这种情况下mysqld可以支持部mysqld_safe的参数,命令如下:
mysqld   --user=mysql --skip-grant-tables --skip-networking &
需注意:执行该命令前一定要关闭mysql的服务(systemctl stop mysqld.service),否则会报错
2.在mysql中修改user表的密码一列:
Mysql5.6(含)执行下面的语句没错
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
但是Mysql5.7中password字段变为了authentication_string,所以语句如下:
mysql> update mysql.user set authentication_string=password('newpassword') where user='root'
mysql> flush privileges;
mysql> quit

3。此时, mysql -uroot -p已经可以让你进去mysql了,之后还要再次修改一次密码,才可使用查表等语句:
 mysql>SET PASSWORD = PASSWORD('some password')
这里的密码一定要足够复杂


总结:遇到access denied后百度、谷歌了一大堆,都没什么用,最后还是跑去看官方文档了,而且直接在官方文档里搜索遇到的问题,也可找到对应的解决方法,省时省力。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值