Centos7.x安装mysql8
安装过程
在官网下载Centos7对应的mysql8的tar安装包
-
检查是否安装过mysql
rpm -qa | grep -i mariadb
- 有安装过就卸载
rpm -e --nodeps mariadb-libs
- 有安装过就卸载
-
给/tmp目录授权
chmod -R 777 /tmp
-
查询依赖是否安装,没安装再安装
- rpm -qa|grep libaio 没安装的话使用
yum -y install libaio
- rpm -qa|grep net-tools 没有安装的话就
yum -y install net-tools
- yum install -y perl-Module-Install.noarch
- rpm -qa|grep libaio 没安装的话使用
-
把tar保存到/opt/software目录下,并解压tar包
tar xvf mysql-8.0.29-1.el8.x86_64.rpm-bundle.tar -C ../mysql8.0.29
-
在解压的目录执行 必须按照顺序执行
rpm -ivh mysql-community-common-8.0.29-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.29-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.29-1.el7.x86_64.rpm rpm -ivh mysql-community-icu-data-files-8.0.29-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.29-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.29-1.el7.x86_64.rpm
-
查看mysql版本,如果显示就是安装成功,命令是:
mysqladmin --version
,执行完此命令可以看到mysql的版本就算成功 -
初始化mysqld --initialize --user=mysql
-
mysql8已经默认初始化了,会给我们mysql服务默认分配一个临时的密码,存储的文件在:
cat /var/log/mysqld.log
- 查找临时密码:
grep 'temporary password' /var/log/mysqld.log
- 查找临时密码:
-
拿到密码后,修改密码:
- 先设置一个难度高点的密码,后面再改: 例如:
atguigU@1mgx
- 命令是
ALTER USER 'root'@'localhost' IDENTIFIED BY 'atguigU@1mgx';
- 命令是
- 因为mysql8默认有密码检测安全等级,需要降低密码检测的等级
SHOW VARIABLES LIKE 'vali%'; #如果此时执行上述命令查询的结果是empty set就执行安装插件 INSTALL COMPONENT 'file://component_validate_password'; SHOW VARIABLES LIKE 'vali%'; validate_password_length 8 # 密码的最小长度,此处为8。 validate_password_mixed_case_count 1 # 至少要包含小写或大写字母的个数,此处为1。 validate_password_number_count 1 # 至少要包含的数字的个数,此处为1。 validate_password_policy MEDIUM # 强度等级,其中其值可设置为0、1、2。分别对应: 【0/LOW】:只检查长度。 【1/MEDIUM】:在0等级的基础上多检查数字、大小写、特殊字符。 【2/STRONG】:在1等级的基础上多检查特殊字符字典文件,此处为1。 validate_password_special_char_count 1 # 至少要包含的个数字符的个数,此处为1。 set global validate_password.policy=0; set global validata_password.length=4; #修改完等级之后需要退出重新换密码 exit; mysql -uroot -p enter password: your password ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
-
如果忘掉密码的时候可以选择跳过密码【临时使用】
在/etc/my.cnf [mysqld] skip_grant_tables=1
- 先设置一个难度高点的密码,后面再改: 例如:
远程连接
关闭防火墙systemctl stop firewalld
新增的用户默认在mysql系统表中的user表中的host字段默认是%,表示可以远程连接
我们需要让user表中的root用户可以远程连接的命令是:
#先使用mysql
use mysql;
select user, host from user;
update user set host = '%' where user = 'root';
flush privileges;
配置完之后可以使用navicat远程工具连接了