一、卸载已安装的MySQL包
1、查找mysql安装包
使用命令 yum list installed | grep mysql [root@localhost7 ~]# yum list installed | grep mysql mysql-community-client.x86_64 5.7.31-1.el7 @mysql57-community mysql-community-common.x86_64 5.7.31-1.el7 @mysql57-community mysql-community-libs.x86_64 5.7.31-1.el7 @mysql57-community mysql-community-libs-compat.x86_64 5.7.31-1.el7 @mysql57-community mysql-community-server.x86_64 5.7.31-1.el7 @mysql57-community mysql57-community-release.noarch el7-11 @/mysql57-community-release-el7-11.noarch 或者用以下命令查找 rpm -qa|grep mysql [root@localhost7 ~]# rpm -qa|grep mysql mysql-community-server-5.7.31-1.el7.x86_64 mysql-community-common-5.7.31-1.el7.x86_64 mysql-community-client-5.7.31-1.el7.x86_64 mysql57-community-release-el7-11.noarch mysql-community-libs-compat-5.7.31-1.el7.x86_64 mysql-community-libs-5.7.31-1.el7.x86_64
2、将前面的6个安装包都删除
[root@localhost7 ~]# yum remove xxxxxxx 或者 [root@localhost7 ~]# rpm -e --nodeps xxxxxxx xxxxx是前面的安装包名,--nodeps是强制删除。
3、查找mysql残留文件夹,并删除
[root@localhost7 ~]# find / -name mysql /etc/logrotate.d/mysql /var/lib/mysql /var/lib/mysql/mysql /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql 删除 (请勿删错,谨慎操作!) rm -rf xxxxxx
4、删除mariadb
[root@localhost7 ~]# rpm -qa|grep mariadb
显示 :mariadb-libs-5.5.60-1.el7_5.x86_64
[root@localhost7 ~]# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
二、安装MySQL 5.7
安装在 /usr/local/ 目录下,安装包一般放在/opt目录下,解压后的软件一般放在/usr/local目录下
1、下载安装包
[root@localhost /]# cd /usr/local/ [root@localhost local]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
2、安装mysql源与服务
[root@localhost local]# yum -y localinstall mysql57-community-release-el7-11.noarch.rpm [root@localhost local]# yum -y install mysql-community-server 或者 用如下方式 rpm -ivh mysql57-community-release-el7-11.noarch.rpm cd /etc/yum.repos.d/ 必须进入该目录 yum install mysql-server
3、YUM安装界面,等待时间较久。
4、启动mysql服务,并设置开机自启
CentOS6 用的是 service 不是systemctl 启动mysql [root@localhost local]# systemctl start mysqld 开机自启 [root@localhost local]# systemctl enable mysqld [root@localhost local]# systemctl daemon-reload
三、登录并修改数据库密码
1、获取临时密码
【说明】mysql安装完成之后,会在 /var/log/mysqld.log 文件中,给root生成了一个临时的默认密码。 获取临时密码:(密码较为复杂) grep 'temporary password' /var/log/mysqld.log 不推荐使用 vim /var/log/mysqld.log 命令去文件中找密码,真的找不到,找到了感觉也不对。
2、用临时密码,登录MySQL
[root@localhost local]# mysql -u root -p
3、登陆失败,可跳过验证
修改MySQL 配置文件,跳过验证 vim /etc/my.cnf (windows下修改的是my.ini) 在[mysqld]后面任意一行添加 skip-grant-tables 保存并退出 重启 mysql systemctl restart mysqld 重新登陆 mysql -u root -p
4、登陆成功,修改密码策略
【注意】默认密码设置时必须包含大小写字母、特殊符号、数字,并且长度大于8位。 登录成功后,mysql需要立即设置密码,否则无法进行任何操作,可以设置如下密码 Root1234! ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root1234!'; 然后修改密码强度,修改初始密码策略,再把密码修改为自己喜欢容易记得 查看密码策略 SHOW VARIABLES LIKE 'validate_password%'; 【说明】 1)、validate_password_dictionary_file 指定密码验证的文件路径; 2)、validate_password_length 固定密码的总长度; 3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数; 4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数; 5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM; 6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数; 关于 validate_password_policy 的取值: LOW:只验证长度; 1/MEDIUM:验证长度、数字、大小写、特殊字符; 2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
可进行以下设置 长度设为6 set global validate_password_length=6; 大小写字母个数至少0个 set global validate_password_mixed_case_count =0; 强度等级为LOW set global validate_password_policy =LOW; 特殊字符至少0个 set global validate_password_special_char_count=0;
5、登录成功,修改密码
设置初始密码为 Root1234! ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root1234!'; 在改变密码策略后,在重新设置密码为123456好记忆! 修改密码为123456 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; 设置远程登录 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 退出 mysql> exit
6、设置编码为UTF-8,并查看编码
vim /etc/my.cnf 在mysqld 后面添加如下代码 character_set_server=utf8 init_connect='SET NAMES utf8' 保存退出,重启mysql ,查看编码 show variables like '%character%';
四、防火墙开启3306端口
1、CentOS7和8
1.防火墙的基本启动/停止/重启命令 (防火墙关闭后显示notrunning,开启后显示running) systemctl status firewalld.service 查看防火墙状态 systemctl start/stop firewalld.service 启动、停止防火墙 systemctl restart/reload firewalld.service 重启、重新加载防火墙 systemctl enable/disable firewalld.service 开机就开启、关闭防火墙 2.新增/删除一个开放端口 1)新增端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent 2)新增多个 firewall-cmd --zone=public --add-port=80-90/tcp –permanent 3)删除端口 firewall-cmd --zone=public --remove-port=3306/tcp --permanent 说明: –zone #作用域 –add-port=3306/tcp #添加端口,格式为:端口/通讯协议 –permanent 永久生效,没有此参数重启后失效
2 、CentOS6
1.防火墙的基本启动/停止/重启命令 service iptables status 查看防火墙状态 service iptables start/stop 启动、停止防火墙 service iptables restart/reload 重启、重新加载防火墙 chkconfig iptables on/off 开机就开启、关闭防火墙 2.新增一个开放端口 (1)直接添加: /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT /etc/rc.d/init.d/iptables save (2)修改防火墙文件添加: vi /etc/sysconfig/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT service iptables restart 3.centos6查看本机已经启用的监听端口 netstat -ant
五、相关报错
1、yum install mysql-community-server依赖关系错误
CentOS 6、CentOS7 下 是因为 mysql 的依赖问题,安装前未卸载干净,最快的解决方案就是卸载重装.(参考1.2 /1.3), 可以用上述方法重新卸载一次,或者用下面方式在卸载一次都可以。(查找删除的命令不同而已) 1、快速删除 yum remove mysql mysql-server mysql-libs 2.查找残留文件 rpm -qa | grep -i mysql 3、将查询出来的文件逐个删除,如: yum remove mysql-community-common-5.7.20-1.el6.x86_64 4、查找残留目录 whereis mysql 5、逐条删除目录,如 rm –rf /usr/lib64/mysql
CentOS 8 下 未找到匹配的参数: mysql-community-server 【错误】:没有任何匹配 (官网有说明)CentOS 8 安装mysql之前要先禁用默认的mysql模块, 提前卸载net-snmp-agent,否则mariadb会跟安装的mysql-5.7冲突导致安装报错,因为mysql5.7还是innodb 卸载net-snmp-agen yum remove net-snmp-agen-libs.x86_64 禁用模块 sudo yum -y module disable mysql 重新用此命令安装 sudo yum -y install mysql-community-server
2、Centos7安装Mysql5.7 提示GPG 密钥不存在/不合适
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022