基础环境准备
#系统版本CentOS 7#查看系统 glibc支持的版本strings /lib64/libc.so.6 |grep ^GLIBC#添加mysql用户id mysqluseradd -s /sbin/nologin -M mysql#下载wget下载工具yum -y install wget#卸载自带的MariaDB 5.5rpm -qa | grep mariadbyum -y remove mariadb-libs
1、下载安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
# 校验MD5值与下载页对比
md5sum mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
tar -xf mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
2、安装MySQL软件
#创建目录结构,授权
mkdir -p /data/app
mkdir -p /data/3306/data
mkdir -p /data/3306/logs
mv /root/mysql-8.0.24-linux-glibc2.12-x86_64 /data/app/mysql8024
chown -R mysql.mysql /data
ll -d /data
#添加环境变量
vim /etc/profile
export PATH=/data/app/mysql8024/bin:$PATH
#刷新环境变量配置并检验
source /etc/profile
mysql -V
#显示此信息代表MySQL软件安装完成
mysql Ver 8.0.24 for Linux on x86_64 (MySQL Community Server - GPL)
3、初始化数据目录
初始化目的: 创建系统库
mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql8024 --datadir=/data/3306/data
#正确输出信息
2021-06-07T08:10:50.890757Z 0 [System] [MY-013169] [Server] /data/app/mysql8024/bin/mysqld (mysqld 8.0.24) initializing of server in progress as process 2032
2021-06-07T08:10:50.973628Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-06-07T08:10:58.028541Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-06-07T08:11:01.089878Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
可能遇到的报错
#数据目录存在文件
[ERROR] [MY-013236] [Server] The designated data directory /data/3306/data/ is unusable. You can remove all files that the server added to it.
解决办法:
清空数据目录,再重新初始化
初始化参数说明
--initialize-insecure: 初始化核心参数
--user=mysql: 指定mysql运行用户
--basedir=/usr/local/mysql: 指定数据库软件位置
--datadir=/data/3306/data: 指定数据存储位置
多版本初始化区别
5.7 和 8.0 版本一样,使用 $/bin/mysqld 程序进行初始化
5.7 版本之前不一样,使用 $/scripts/mysql_install_db 脚本进行初始化
#MySQL 5.7 & 8.0 初始化方式
$/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql8024 --datadir=/data/3306/data
#MySQL 5.6 及以下版本初始化方式
$/scripts/mysql_install_db --user=mysql --basedir=/data/app/mysql5638 --datadir=/data/3306/data
初始化参数区别
--initialize
会生成一个12位,4种密码复杂度临时管理员密码,第一次登陆需要修改
--initialize-insecure
管理员密码为空
4、编写配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql8024
datadir=/data/3306/data
port=3306
socket=/tmp/mysql.sock
server_id=6
log_bin=/data/3306/logs/mysql-bin
binlog_format=row
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
default_authentication_plugin=mysql_native_password
[client]
socket=/tmp/mysql.sock
EOF
5、准备启动脚本
cp -a /data/app/mysql8024/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
6、使用systemd管理mysql
cat > /etc/systemd/system/mysql.service <<EOF
[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
ExecStart=/data/app/mysql8024/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
#启动和开机自启mysql
systemctl enable mysql
systemctl start mysql
systemctl status mysql
systemctl list-unit-files | grep mysql
7、设置用户密码
#输入mysql命令,进入到mysql命令提示符
mysql
#设置root管理员用户密码(只能本机登录)
alter user 'root'@'localhost' identified by '123';
#创建admin用户,所有库,所有表,远程访问权限
create user 'admin'@'%' identified with mysql_native_password by '123';
grant all on *.* to 'admin'@'%';
#刷新权限表
flush privileges;
#查看用户列表
select host,user,plugin from mysql.user;
#退出
exit
#测试连接
#本地访问
mysql -uroot -p123
#远程访问
mysql -uadmin -p123 -h 192.168.10.14 -P 3306
MySQL 8.0 用户密码新特性
#MySQL 8.0 采用了新的加密插件:caching_sha2_password
部分场景下需要替换为 MySQL.8.0 以前的密码插件:mysql_native_password
例如:主从、MHA、客户端软件
#配置方法:
1. 创建用户时指定密码插件为: native
create user 'admin'@'%' identified with mysql_native_password by '123';
2. 配置文件配置默认密码插件为native
[mysqld]
default_authentication_plugin=mysql_native_password
