安装包下载地址:
https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-el7-x86_64.tar.gz
8.0的包是直接提供了已编译的文件,不需要像之前的版本那样从源码编译了,这里主要就是进行相关的一些配置。
以下步骤:
1、解压安装包
tar -zxvf mysql-8.0.30-el7-x86_64.tar.gz
mv mysql-8.0.30-el7-x86_64 /home/mysql # 我部署在这个目录下
2、配置账号
groupadd mysql
useradd -M -s /sbin/nologin -g mysql mysql # 这是创建一个非登录授权的用户
mkdir -p /home/mysql/data
chown -R mysql:mysql /home/mysql
3、设置mysql配置文件
mv /etc/my.cnf /etc/my.conf.bak
vi /etc/my.cnf
输入以下内容:
[cient]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
datadir = /home/mysql/data
slow_query_log=1
slow_query_log_file=mysqld-slow.log
long_query_time=2
#fix group by problem up 5.7.9
sql-mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# binlog
server-id=1
log-bin=bin_log
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
# character settings
init_connect = SET NAMES utf8mb4 COLLATE utf8mb4_general_ci
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
# can't set this variable in this way, try set global default_collation_for_utf8mb4='utf8mb4_general_ci';
# default_collation_for_utf8mb4 = utf8mb4_general_ci
尾部是设置一些字符集和排序集,这里是我常用的设置,大家可以根据自己的环境调整
注意:default_collation_for_utf8mb4 是创建库表时,默认的排序集,mysql8默认是utf8mb4_0900_ai_ci,但是现在阶段还涉及到与5.x版本兼容的问题,因此我这里就需要在数据库启动好后,手工执行一次设置默认排序集的命令:
set global default_collation_for_utf8mb4='utf8mb4_general_ci';
4、执行初始化命令
cd /home/mysql/bin
./mysqld --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data --initialize
执行成功会显示初始化密码,类似:
2023-05-08T12:14:08.597695Z 0 [System] [MY-013169] [Server] /home/mysql/bin/mysqld (mysqld 8.0.30) initializing of server in progress as process 11847
2023-05-08T12:14:08.606474Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-05-08T12:14:09.017540Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-05-08T12:14:10.252818Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xxxxxxxxxxx
5、启动mysql
/home/mysql/bin/mysqld_safe &
6、修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
7、善后工作
- 将mysql路径放入环境变量:在/etc/profile文件中加入:
export PATH=$PATH:/home/mysql/bin
- 设置开机启动,我习惯放在rc.local中(也可以加入系统服务中):
/home/mysql/bin/mysqld_safe &
如果是新系统,特别注意要给rc.local授执行权限:
chmod +x /etc/rc.d/rc.local
至此,大功告成!
附,8.0的用户授权命令做了调整,如下:
# 8.0版本需要将创建用户和授权进行分步进行:
# 创建账号密码
CREATE USER `username`@`host` IDENTIFIED BY 'passowrd';
# 授予权限
GRANT ALL ON *.* TO `username`@`host` WITH GRANT OPTION;
# 删除权限
REVOKE all privileges ON databasename.tablename FROM 'username'@'host';
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
# 创建带过期时间的用户:
CREATE USER `username`@`host` IDENTIFIED BY 'username' PASSWORD EXPIRE INTERVAL 90 DAY;
GRANT ALL ON *.* TO `username`@`host` WITH GRANT OPTION;
# 删除用户
DROP USER `username`@`host`;