2025-06-13
数据库
mysql8.4
12

一、下载软件

# 查看系统glibc版本,CentOS7一般是2.17
ldd --version
1.下载安装
官网地址:https://dev.mysql.com/downloads/
选择 "MySQL Community Server" -> 选择 "Archives"(历史版本)-> 选择版本(8.4.4)、系统(Linux - Generic)、OS Version(Linux - Generic (glibc 2.17) (x86, 64-bit))
mkdir /usr/local/download
mkdir /usr/local/software

cd /usr/local/download
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.4.4-linux-glibc2.17-x86_64.tar.xz

tar -xvf mysql-8.4.4-linux-glibc2.17-x86_64.tar.xz
cp -r mysql-8.4.4-linux-glibc2.17-x86_64 /usr/local/software/mysql8.4
2.创建用户组
groupadd mysql
useradd -r -g mysql mysql

chown -R mysql /usr/local/software/mysql8.4
chgrp -R mysql /usr/local/software/mysql8.4

touch /www/log/mysql/mysqld84.log # 新建空白文件
chown mysql:mysql /www/log/mysql/mysqld84.log # 指定文件所有者

touch /www/log/mysql/mysqld84_slow.log # 新建空白文件
chown mysql:mysql /www/log/mysql/mysqld84_slow.log # 指定文件所有者
3.创建数据目录
mkdir -p /usr/local/software/mysql8.4/data
chown mysql:mysql -R /usr/local/software/mysql8.4/data
chmod -R 777 /usr/local/software/mysql8.4/data
4.创建配置文件
vim /etc/my84.cnf

[mysqld]
user=mysql

basedir=/usr/local/software/mysql8.4
datadir=/usr/local/software/mysql8.4/data
socket=/tmp/mysql84.sock
pid-file=/usr/local/software/mysql8.4/data/mysqld.pid

# 重新指定日志路径
log-error=/www/log/mysql/mysqld84.log
port=3384
bind-address=127.0.0.1

# character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true

# 慢日志记录
slow_query_log=1
long_query_time=3
slow_query_log_file=/www/log/mysql/mysqld84_slow.log

# skip-grant-tables
5.初始化数据库
yum install -y libaio.so.1 libaio numactl

cd /usr/local/software/mysql8.4/bin
./mysqld --defaults-file=/etc/my84.cnf --basedir=/usr/local/software/mysql8.4/ --datadir=/usr/local/software/mysql8.4/data/ --user=mysql --initialize

# 创建 pid
touch /usr/local/software/mysql8.4/data/mysqld.pid
chmod 777 /usr/local/software/mysql8.4/data/mysqld.pid
6.修改启动文件
vim /usr/local/software/mysql8.4/support-files/mysql.server

修改内容如下:

# 第46-47行
basedir=/usr/local/software/mysql8.4
datadir=/usr/local/software/mysql8.4/data

# 第58行
lock_file_path="$lockdir/mysql84"

# 第63行
mysqld_pid_file_path=/usr/local/software/mysql8.4/data/mysqld.pid

# 第207行
conf=/etc/my84.cnf

# 第266行
$bindir/mysqld_safe --defaults-file=/etc/my84.cnf --port=3384 --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
6.设置开机启动
cp /usr/local/software/mysql8.4/support-files/mysql.server /etc/init.d/mysqld84
systemctl daemon-reload 

chkconfig --add mysqld84
chkconfig mysqld84 on

service mysqld84 start
service mysqld84 stop
service mysqld84 restart

systemctl start mysqld84.service
systemctl stop mysqld84.service
systemctl restart mysqld84.service
systemctl status mysqld84.service
8.创建软链接
ln -s  /usr/local/software/mysql8.4/bin/mysql /usr/bin/mysql84
ln -s  /usr/local/software/mysql8.4/bin/mysqldump /usr/bin/mysqldump84 # 备份数据库
9.用户登录
# 查找初始密码
cat /www/log/mysql/mysqld84.log | grep password
2023-04-23T04:43:28.176816Z 1 [Note] A temporary password is generated for root@localhost: l5%sOhmiVpdV

# 登录
mysql84 -u root -P 3384 -p 

二、配置文件

1.修改 mysql 密码
vim /etc/my84.cnf

# 打开配置文件,在 [mysqld] 后面添加新行
skip-grant-tables

service mysqld84 restart # 重启 mysqld

# 执行命令:
mysql84 -u root -P 3384 -p 

select user, host, authentication_string  from mysql.user; # 查看用户
alter user 'root'@'localhost' identified by '123456'; # 修改密码

flush privileges;
quit;

# 退出后删除 my.cnf 文件中 skip-grant-tables 这一行,并重启 mysqld
2.密码简单报错处理
alter user 'root'@'localhost' identified by '123456'; # 再次执行修改密码

set global validate_password_policy=0; # 首先修改 validate_password_policy 参数 
set global validate_password_length=1; # 再修改密码的长度

# 如果 mysql 只需要 ssh 连接,可以不创建 root@% 用户,只使用默认的 root@localhost 即可
select user, host, authentication_string  from mysql.user; # 显示当前所有用户
create user 'root'@'%' identified by '123456'; # 创建用户 root@%
update user set host = '%' where user ='root'; # 允许任何 ip 链接

flush privileges;

三、数据库用户

1.查看用户状态
mysql84 -h172.16.0.8 -uroot -P3306 -p # 用户登录

show grants for 'root'@'localhost'; # 查看某个用户授权
select user,host from mysql.user; # 显示当前所有用户
2.创建数据库
show databases;
create database blog default charset utf8mb4;
drop database blog;
3.添加 mysql 用户
create user 'test'@'localhost' identified by '123456'; # 创建用户

grant all privileges on *.* to 'test'@'localhost' identified by '123456'; # 赋予数据库权限
grant all privileges on `blog`.* to 'test'@'localhost' identified by '123456'; # 赋予 blog 数据库权限
grant create,drop,index,alter,select,insert,update,delete on `blog`.* to 'test'@'localhost' identified by '123456'; # 赋予 blog 数据库部分权限

revoke all privileges on `blog`.* from 'test'@'localhost'; # 回收所有权限
revoke delete on `blog`.* from 'test'@'localhost'; # 回收 delete 权限
flush privileges; # 刷新权限
4.删除用户
revoke all privileges on `blog`.* from 'test'@'localhost';
delete from mysql.user where user='test' and host='localhost';
flush privileges;
drop user 'test'@'localhost'; 
5.修改密码
select user, host, authentication_string  from mysql.user; # 查看用户
alter user 'root'@'localhost' identified by '123456'; # 修改密码

四、报错处理

1.Couldn't agree a key exchange algorithm (available: curve25519-sha256@libssh.org, ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256)
vim /etc/ssh/sshd_config

# 注释最后一行并添加
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
# KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256

KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1

# 重启服务
systemctl restart sshd
标签:

mysql8.4