CentOS7服务器安装mysql5.7及配置Navicat远程访问(完美解决1045-Access denied for user 'root'@'localhost')

1.卸载原系统中的mariadb

首先执行命令rpm -qa|grep mariadb查看是否有mariadb的安装包,没有可以无视

接下来,执行 rpm -e --nodeps mariadb-libs删除

mkdir /usr/local/mysql

新建一个mysql文件夹

执行

wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

进行下载

2.进行yum源安装

执行

rpm -ivh mysql80-community-release-el7-1.noarch.rpm

命令

接下来可以通过

yum repolist all | grep mysql

查看yum源中的mysql安装包

CentOS7服务器安装mysql5.7及配置Navicat远程访问(完美解决1045-Access denied for user 'root'@'localhost')_第1张图片

3.进行mysql安装

可以看到yum源中默认启用的安装包版本为MySQL8.0,如果需要切换为5.7,需要运行以下命令;

yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community

注意:yum-config-manager默认使用的是python2版本环境,如果用户使用这个命令时报错,可能是因为当前默认python版本为python3版本。需要在/bin/yum-config-manager文件中修改文件头#!/usr/bin/python -tt#!/usr/bin/python2 -tt

CentOS7服务器安装mysql5.7及配置Navicat远程访问(完美解决1045-Access denied for user 'root'@'localhost')_第2张图片

如果找不到,可以直接修改mysql的yum源文件,yum配置文件里从5.5版本到8.0都有,只不过默认只开启了mysql8.0。更改别的版本记得将mysql8.0的源 enable=0

vim /etc/yum.repos.d/mysql-community.repo

 

接下来可以开始进行安装步骤,执行命令

yum install mysql-community-server

进行安装,需要依赖安装时选择y就ok

4. 启动mysql服务

执行命令

systemctl start mysqld.service

来启动mysql服务,

systemctl status mysqld.service

可查看mysql服务运行状态

CentOS7服务器安装mysql5.7及配置Navicat远程访问(完美解决1045-Access denied for user 'root'@'localhost')_第3张图片

MySQL服务器初始化(从MySQL 5.7开始):在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

  • 服务器已初始化。

  • 在数据目录中生成SSL证书和密钥文件。

  • 该validate_password插件安装并启用。

  • 'root'@'localhost' 创建一个超级用户帐户。设置超级用户的密码并将其存储在错误日志文件中。要显示它,请使用以下命令:

grep 'temporary password' /var/log/mysqld.log

通过使用生成的临时密码登录并为超级用户帐户设置自定义密码,尽快更改root密码:

mysql -u root -p

输入以上临时密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '您的密码';

注意
MySQL的 validate_password 插件默认安装。这将要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且密码总长度至少为8个字符。

如果您需要修改简单密码,可以依次执行以下操作步骤:

set global validate_password_policy=0;
set global validate_password_length=1;
set global validate_password_mixed_case_count=2;
-- 然后进行密码更改
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

 上面方法踩坑,这样是可以快速修改成简单的,但是navicat连接时会报错

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

这里建议不要图方便

解决办法:

1、查看 mysql 初始的密码策略,
输入语句

SHOW VARIABLES LIKE 'validate_password%'; 

进行查看,

2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “

set global validate_password_policy=LOW;

” 进行设值,


3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “

set global validate_password_length=6;

” 进行设值,

4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

 ” 可以看到修改成功,表示密码策略修改成功了!!!

 5.允许远程连接

use mysql;

 

grant all on *.* to root@'%' identified by '123456' with grant option; 
flush privileges;

  6.开放3306端口

首先查看firewall是否已开启: 

systemctl status firewalld.service

开放端口(开放后需要更新规则才能生效): 

firewall-cmd --zone=public --add-port=3306/tcp --permanent

更新防火墙规则:

firewall-cmd --reload

先掌握下 systemctl+firewall 命令

描述 命令
查看firewall状态 systemctl status firewalld.service
启动firewall systemctl start firewalld
停止firewall systemctl stop firewalld
开机启动firewall systemctl enable firewalld
开机禁止firewall systemctl disable firewalld
额外学习下systemctl命令^_^
查看服务是否开机启动 systemctl is-enabled firewalld.service
查看已启动的服务列表 systemctl list-unit-files|grep enabled
查看启动失败的服务列表 systemctl --failed

 

其次掌握 firewall-cmd 命令

描述 命令
查看firewall全部信息 firewall-cmd --list-all
查看已开放的端口 firewall-cmd --list-ports
更新防火墙规则 firewall-cmd --reload
开放端口 firewall-cmd --zone=public --add-port=3000/tcp --permanent
关闭端口 firewall-cmd --zone=public --remove-port=3000/tcp --permanent

   7.Navicat连接

CentOS7服务器安装mysql5.7及配置Navicat远程访问(完美解决1045-Access denied for user 'root'@'localhost')_第4张图片

完成 

填坑:

我第一次写这个的时候是完美解决1045-Access denied for user 'root'@'localhost'的,第二次竟然不行了,后面发现改完之后重启了mysql服务,可以了。。。

再填坑,上面修改的方法正常情况是没问题的,就怕服务挂掉,还是修改配置文件靠谱:
想要关闭mysql默认策略,则在配置文件(/etc/my.cnf)中加入以下并重启mysqld即可:
[mysqld]
validate_password=off

或者
UNINSTALL PLUGIN validate_password;
即可

你可能感兴趣的:(开发工具)