本文OS环境
[root@localhost etc]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
1.下载mysql yum源
在 https://dev.mysql.com/downloads/repo/yum/ 找到 yum 源 rpm 安装包
安装 mysql 源
# 下载
shell> wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
# 安装 mysql 源
shell> yum localinstall mysql80-community-release-el7-3.noarch.rpm
我们验证下
[root@localhost mysql]# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community 禁用
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - So 禁用
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community 禁用
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - So 禁用
mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Community 禁用
mysql-cluster-8.0-community-source MySQL Cluster 8.0 Community - So 禁用
mysql-connectors-community/x86_64 MySQL Connectors Community 启用: 212
mysql-connectors-community-source MySQL Connectors Community - Sou 禁用
mysql-tools-community/x86_64 MySQL Tools Community 启用: 132
mysql-tools-community-source MySQL Tools Community - Source 禁用
mysql-tools-preview/x86_64 MySQL Tools Preview 禁用
mysql-tools-preview-source MySQL Tools Preview - Source 禁用
mysql55-community/x86_64 MySQL 5.5 Community Server 禁用
mysql55-community-source MySQL 5.5 Community Server - Sou 禁用
mysql56-community/x86_64 MySQL 5.6 Community Server 禁用
mysql56-community-source MySQL 5.6 Community Server - Sou 禁用
mysql57-community/x86_64 MySQL 5.7 Community Server 禁用
mysql57-community-source MySQL 5.7 Community Server - Sou 禁用
mysql80-community/x86_64 MySQL 8.0 Community Server 启用: 283
mysql80-community-source MySQL 8.0 Community Server - Sou 禁用
我们可以看到默认的GA版本是8.0,这里我们想安装5.7版本
[root@localhost mysql]# yum-config-manager --enable mysql57-community
yum-config-manager --disable mysql80-community
再list下 yum repolist all | grep mysql
[root@localhost mysql]# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community 禁用
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - So 禁用
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community 禁用
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - So 禁用
mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Community 禁用
mysql-cluster-8.0-community-source MySQL Cluster 8.0 Community - So 禁用
mysql-connectors-community/x86_64 MySQL Connectors Community 启用: 212
mysql-connectors-community-source MySQL Connectors Community - Sou 禁用
mysql-tools-community/x86_64 MySQL Tools Community 启用: 132
mysql-tools-community-source MySQL Tools Community - Source 禁用
mysql-tools-preview/x86_64 MySQL Tools Preview 禁用
mysql-tools-preview-source MySQL Tools Preview - Source 禁用
mysql55-community/x86_64 MySQL 5.5 Community Server 禁用
mysql55-community-source MySQL 5.5 Community Server - Sou 禁用
mysql56-community/x86_64 MySQL 5.6 Community Server 禁用
mysql56-community-source MySQL 5.6 Community Server - Sou 禁用
mysql57-community/x86_64 MySQL 5.7 Community Server 启用: 524
mysql57-community-source MySQL 5.7 Community Server - Sou 禁用
mysql80-community/x86_64 MySQL 8.0 Community Server 禁用
mysql80-community-source MySQL 8.0 Community Server - Sou 禁用
可以看到57是默认版本
2.安装 MySQL
使用 yum install 命令安装
yum install -y mysql-community-server
3.启动 MySQL 服务
先修改下mysql的配置文件,主要是改下port和数据文件位置和日志位置
[root@localhost mysql]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
port=3358
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
启动mysql
systemctl start mysqld
报错 3358 没权限
查看日志
google一下发现SELinux为mysql预留的端口是3306,所以要为3358端口增加SELINUX许可,使用semanage 官方文档 Setting the TCP Port Context for mysqld
[root@localhost ~]# semanage port -l | grep mysql
mysqld_port_t tcp 1186, 3306, 63132-63164
mysqlmanagerd_port_t tcp 2273
[root@localhost ~]# semanage port -a -t mysqld_port_t -p tcp 3358
[root@localhost ~]# semanage port -l | grep mysqld
mysqld_port_t tcp 3358, 1186, 3306, 63132-63164
重新启动,查看状态
[root@localhost mysql]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2021-08-24 10:04:36 CST; 12s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 30371 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 30350 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 30375 (mysqld)
Tasks: 27
Memory: 201.1M
CGroup: /system.slice/mysqld.service
└─30375 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
8月 24 10:04:35 localhost.localdomain systemd[1]: mysqld.service holdoff time over, scheduling restart.
8月 24 10:04:35 localhost.localdomain systemd[1]: Starting MySQL Server...
8月 24 10:04:36 localhost.localdomain systemd[1]: Started MySQL Server.
设置开机启动[root@localhost mysql]# systemctl enable mysqld
4.移动数据目录
[root@localhost mysql]# mkdir /servers/mysql/data
[root@localhost mysql]# cp /var/lib/mysql/* /servers/mysql/data
[root@localhost mysql]# vim /etc/my.cnf 修改配置文件
[mysqld]
datadir=/servers/mysql/data
socket=/servers/mysql/data/mysql.sock
port=3358
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
重新启动报错,查看报错信息,[root@localhost mysql]# journalctl -xe
,
还是selinux限制了。
为mysqld添加操作目录,重新启动,success
semanage fcontext --add --type mysqld_db_t '/servers/mysql(/.*)?'
restorecon -Rv /servers/mysql
5.修改 root 本地账户密码
mysql 安装完成之后,生成的默认密码在 /var/log/mysqld.log 文件中。使用 grep 命令找到日志中的密码。
[root@localhost mysql]# grep 'temporary password' /var/log/mysqld.log
2021-08-24T01:26:41.308383Z 1 [Note] A temporary password is generated for root@localhost: FarU4Tvwit;R
[root@localhost mysql]# mysql -uroot -p -h127.0.0.1 -P 3358
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '71F%lfQxUe';
6.添加远程登录用户,合理授权
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接密码’;
mysql> GRANT ALL PRIVILEGES ON waiqin.* TO 'waiqin'@'127.0.0.1' IDENTIFIED BY '1qaz@WSX' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
7.设置默认编码为 utf8
mysql 安装后默认不支持中文,需要修改编码。
修改 /etc/my.cnf 配置文件下添加编码配置,如下:
character-set-server=utf8
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.07 sec)