MySQL 8.0 RPM 安装指南
在 Linux 系统中,我们可以使用 RPM 包来安装 MySQL 8.0。
通用准备事项
确认系统版本:下载 rpm 包时要认清对应的系统版本,例如 el7 代表的是 Linux 7 版本。
下载 RPM 包:可以从 MySQL 官网(www.mysql.com )下载所需版本的 RPM 包。进入官网后点击 DOWNLOADS 到下载页面,下滑找到社区版,点击 MYSQL Yum Repository 下载;若要下载其他版本,点击 MYSQL Community 选择安装 MySQL 的系统及版本。
CentOS 7 系统安装步骤
1. 卸载已有的 MariaDB
由于 MySQL 在 CentOS 7 中收费,CentOS 7 内部集成了 MariaDB,安装 MySQL 会和 MariaDB 的文件冲突,所以需要先卸载。使用以下命令查找并删除 MariaDB 文件:
查看 mariadb 的安装包
rpm -qa | grep mariadb
卸载 mariadb(xxx 替换为实际版本号)
rpm -e mariadb-libs-xxx.el7.x86_64 --nodeps
2. 创建 MySQL 目录
进入 /usr/local/ 目录
cd /usr/local/
创建 mysql 目录
mkdir mysql
进入 mysql 目录
cd mysql
3. 安装依赖
安装 numactl(若已安装则跳过)
yum install numactl
安装 wget(若已安装则跳过)
yum install wget
4. 下载 MySQL 安装包
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
5. 解压安装包
tar -xvf mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
6. 安装解压后的 RPM 软件包
可以选择全部安装或单个安装:
全部安装
rpm -ivh *.rpm
单个安装(安装顺序:common、libs、libs-compat、client、server、test(可选装)、devel(可选装)、embedded-compat(可选装))
rpm -ivh mysql-8.0.11-1.el7.x86_64.rpm --nodeps --force
安装日志如下:
[root@node1 ~]# rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
[root@node1 ~]# rpm -qa | grep mariadb
[root@node1 ~]# rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm
warning: mysql-community-common-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOK EY
Preparing… ################################# [100%]
package mysql-community-common-8.0.11-1.el7.x86_64 is already installed
[root@node1 ~]#
[root@node1 ~]#
[root@node1 ~]# rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm
warning: mysql-community-libs-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:mysql-community-libs-8.0.11-1.el7################################# [100%]
[root@node1 ~]# rpm -ivh mysql-community-libs-compat-8.0.11-1.el7.x86_64.rpm
warning: mysql-community-libs-compat-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5 : NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:mysql-community-libs-compat-8.0.1################################# [100%]
[root@node1 ~]# rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm
warning: mysql-community-client-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOK EY
Preparing… ################################# [100%]
Updating / installing…
1:mysql-community-client-8.0.11-1.e################################# [100%]
[root@node1 ~]# rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm --nodeps --force
warning: mysql-community-server-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOK EY
Preparing… ################################# [100%]
Updating / installing…
1:mysql-community-server-8.0.11-1.e################################# [100%]
7. 初始化和配置 MySQL
安装 libaio(否则初始化会报错)
yum install -y libaio
初始化 MySQL
mysqld --initialize
chown -R mysql.mysql /var/lib/mysql
日志目录:/var/log/mysqld.log
my.cnf目录:/etc/my.cnf
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
启动 MySQL 服务
systemctl start mysqld.service
mysqld.service目录:/usr/lib/systemd/system/mysqld.service
vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=notify
Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
Execute pre and post scripts as root
PermissionsStartOnly=true
Needed to create system tables
ExecStartPre=/usr/bin/mysqld_pre_systemd
Start main service
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS
Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
Sets open_files_limit
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
设置 MySQL 开机自启
systemctl enable mysqld
8. 查看和修改 root 密码
查看数据库的 root 登录密码(安装时随机生成)
grep ‘temporary password’ /var/log/mysqld.log
进入数据库登陆界面
mysql -u root -p
修改数据库 root 登录密码 : P@ssw0rd
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘自己想要设置的密码’;
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘P@ssw0rd’;
9. 远程访问授权(可选)
创建可以远程访问的用户 登录密码 : P@ssw0rd
create user ‘root’@’%’ identified with mysql_native_password by ‘登录密码’;
create user ‘root’@’%’ identified with mysql_native_password by ‘P@ssw0rd’;
授予该用户所有权限
grant all privileges on . to ‘root’@’%’ with grant option;
10. 修改 MySQL 加密规则(可选)
由于 MySql 8.0 版本和 5.0 的加密规则不一样,老的可视化工具可能只支持旧的加密方式,可以进行如下修改:
复制
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘root 登录密码’ PASSWORD EXPIRE NEVER;
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘P@ssw0rd’ PASSWORD EXPIRE NEVER;
11.验证远程登录MySQL数据库
[root@node1 lib]# mysql -uroot -p’P@ssw0rd’ -h 192.168.100.201 -P 3306
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.11 MySQL Community Server - GPL
Copyright © 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>