参考:refman-5.7.pdf: 2.5.5 Installing MySQL on Linux Using RPM Packages from Oracle

【前期准备】

1.防火墙端口检查与设置

检查防火墙状态:systemctl status firewalld
启动防火墙:systemctl start firewalld
关闭防火墙:systemctl stop firewalld

设置开机启用防火墙:systemctl enable firewalld.service
设置开机禁用防火墙:systemctl disable firewalld.service

查看防火墙状态:firewall-cmd --state
重新加载配置:firewall-cmd --reload
查看开放的端口:firewall-cmd --list-ports
开启防火墙端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent

2.清理系统自带的mariadb和残留的mysql历史版本

定位文件:
 # rpm -qa | grep mysql
 # rpm -qa | grep mariadb
 # find / -name mysql
 # find / -name mariadb
 # find / -name mysqld.log
 # yum list installed mariadb\*
 # yum list installed mysql\*停止服务然后卸载:
 rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
 rpm -e --nodeps mysql-community-server
 rpm -e --nodeps mysql-community-client
 rpm -e --nodeps mysql-community-libs
 rpm -e --nodeps mysql-community-common定位并删除配置文件:
 # find / -name my.cnf
 # rm -rf /etc/my.cnf/usr/lib64/mysql/plugin
删除数据库数据文件 & 日志临时文件
 # rm -rf /var/lib/mysql
 # rm -rf /var/log/mysqld.log

3.安装依赖包

yum install libmysqlclient gcc make cmake -y
 yum install zlib-devel readline ncurses ncurses-devel openssl-devel -y
 yum install libaio -y
 yum install net-tools -y

4.下载rpm安装包与包信息说明:

下载解解压 mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar 安装包,安装mysql服务需要的软件包:(server,client,common,libs)

a.数据库服务器及相关工具包:mysql-community-server-{version}-{distribution}-{arch}.rpm
b.MySQL客户端应用程序和工具包:mysql-community-client-{version}-{distribution}-{arch}.rpm
c.服务器库和客户端库的公用文件包:mysql-community-common-{version}-{distribution}-{arch}.rpm
d.MySQL数据库客户端应用程序的共享库包:mysql-community-libs-{version}-{distribution}-{arch}.rpm

5.其他说明:

在默认情况下,MySQL服务器将安装在/var/lib/mysql目录中。 
如果需要安装到其他目录,则需要指定路径,如:mkdir -p /opt/mysql。
常见设置路径方法:

option-1: sudo yum install mysql-community-server --installroot=/opt/mysql
 这将在您的/opt目录下创建一个mysql目录,其中包含MySQL服务器安装。option-2: rpm -ivh --prefix=/opt/mysql 或者 rpm -ivh --badreloc --relocate=/var/lib/mysql=/opt/mysql   xxx.rpm

注意:无论是prefix还是relocate都不见得可以真正可以用,因为有的包或者文件不允许装到其他路径

【安装 - 采用默认路径安装】

严格遵守安装顺序,依赖关系依次为common → libs → client → server

1.执行以下命令正式安装mysql:

sudo rpm -ivh mysql-community-common-5.7.43-1.el7.x86_64.rpm 
 sudo rpm -ivh mysql-community-libs-5.7.43-1.el7.x86_64.rpm 
 sudo rpm -ivh mysql-community-client-5.7.43-1.el7.x86_64.rpm 
 sudo rpm -ivh mysql-community-server-5.7.43-1.el7.x86_64.rpm --force --nodeps说明:
 --nodeps:安装时不检查依赖关系
 --force:强制安装rpm与yum安装命令对比:rpm可能更容易失败,因为存在的一些依赖问题
sudo yum install mysql-community-{client,common,libs}-*
 sudo yum install mysql-community-server-*

2.安装命令执行完成后查询安装的 MySQL 版本:

# mysqladmin --version
mysqladmin  Ver 8.42 Distrib 5.7.43, for Linux on x86_64

【启动服务】

检查服务状态:systemctl status mysqld  
启动服务:sudo systemctl start mysqld 或者 sudo service mysqld start
关闭服务:systemctl stop mysqld
重启服务:systemctl restart mysqld

【设置开机启动】

# 设置开机自启动
systemctl enable mysqld
# 重载所有修改过的配置文件
systemctl daemon-reload

【登录 MySQL 修改配置 - 密码与远程访问用户设置】

1.查询安装的临时登录密码

# grep 'temporary password' /var/log/mysqld.log
 2023-07-19T11:25:43.977041Z 1 [Note] A temporary password is generated for root@localhost: L!8Xw;Xy8HLi2.使用临时密码登录
# 输入如下命令回车,然后粘贴临时密码,再回车,输入上面查询到的临时密码登录
 mysql -uroot -p3.修改 root 账户密码,命令格式如下:
命令格式:ALTER USER  'root'@'localhost' IDENTIFIED BY 'new_password';
mysql> alter user 'root'@'localhost' identified by 'root@123';
 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

查看密码策略:

mysql> SHOW VARIABLES LIKE 'validate_password%';
 +--------------------------------------+--------+
 | Variable_name                        | Value  |
 +--------------------------------------+--------+
 | validate_password_check_user_name    | OFF    |    决定是否使用该插件(及强制/永久强制使用):ON/OFF/FORCE/FORCE_PLUS_PERMANENT
 | validate_password_dictionary_file    |        |    插件用于验证密码强度的字典文件路径
 | validate_password_length             | 8      |    密码最小长度
 | validate_password_mixed_case_count   | 1      |    密码至少要包含的小写字母个数和大写字母个数
 | validate_password_number_count       | 1      |    密码至少要包含的数字个数
 | validate_password_policy             | MEDIUM |    密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
 | validate_password_special_char_count | 1      |    密码至少要包含的特殊字符数
 +--------------------------------------+--------+
 7 rows in set (0.02 sec)


                                                    0/LOW:只检查长度。
                                                    1/MEDIUM:检查长度、数字、大小写、特殊字符。
                                                    2/STRONG:检查长度、数字、大小写、特殊字符字典文件。

mysql> alter user 'root'@'localhost' identified by 'Root@123';
注意:如果后期想要修改密码,可以通过如下命令实现:
 mysql> use mysql;
 mysql> update user set password=PASSWORD('new_password') where user='root';
 mysql> flush privileges; 4.添加远程登录用户,命令格式如下:
命令格式:GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> grant all privileges on *.* to 'admin'@'%' identified by 'Admin@123' with grant option;
 mysql> select Host,User,authentication_string,password_expired from user;
 mysql> flush privileges;5.如果需要指定某个用户未远程访问用户,可以:
mysql> use mysql;
 mysql> UPDATE user SET Host='%' WHERE User='xxxUserName';
 mysql> flush privileges; 6.设置默认编码为 utf8(可选)
修改添加如下配置:
 [mysqld]datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.socksymbolic-links=0
log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pidcharacter-set-server=utf8
 collation-server=utf8_general_ci[client]
 default-character-set=utf8[mysql]
 default-character-set=utf8 重启服务,测试远程连接:
# systemctl restart mysqld
 > mysql -uroot -p
 > show variables like 'character%';

rpm包安装方式默认配置文件路径如下:

配置文件:/etc/my.cnf
日志文件:/var/log/var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid

如果需要验证安装包,gpg-key下载地址: https://repo.mysql.com/