最近公司竞标一个项目,要在客户环境中部署一套POC环境,客户用的是麒麟系统,登录后发现和CentOS7差不多,把部署MySQL的过程记录一下
下载并上传到时服务器
- downloads.mysql.com/archives/co…
- 选择合适的版本,这里我们选择 mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
scp mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 108:/opt/soft_packages
安装前的准备
参考
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
tar xvf /opt/soft_packages/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.28-linux-glibc2.12-x86_64 mysql
cd mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
初始化数据库实例
bin/mysqld --initialize --user=mysql
# 这一步会生成一个临时密码
# 2023-03-18T08:35:57.640666Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: &%)Jj<orr9lt
启动数据库
bin/mysql_ssl_rsa_setup
bin/mysqld_safe --user=mysql &
# Next command is optional
cp support-files/mysql.server /etc/init.d/mysql.server
登录并改密码
# 登录
./mysql -uroot -h 127.0.0.1 -p
# 改密码
# 1 in skip-grant-tables mode and in mysqld_safe
update mysql.user set authentication_string=root where User='root';
flush privileges;
exit;
# 2 in mysql(in skip-grant-tables mode or not)
alter user 'root'@'localhost' identified with caching_sha2_password by 'root';
MySQL小知识
MySQL管理用户
中# 查看当前用户
desc mysql.user;
select User, Host from mysql.user;
# 创建用户
CREATE USER zhang3 IDENTIFIED BY '123123'; # 默认host是 %
CREATE USER 'kangshifu'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
# 修改用户
UPDATE mysql.user SET USER='li4' WHERE USER='wang5';
FLUSH PRIVILEGES;
# 删除用户
# 1使用drop
DROP USER li4 ; # 默认删除host为%的用户
DROP USER 'kangshifu'@'localhost';
# 2使用delete,需要执行flush使其生效
# 不推荐通过DELETE FROM USER u WHERE USER='li4' 进行删除,系统会有残留信息保留。而drop user命令会删除用户以及对应的权限,执行命令后你会发现mysql.user表和mysql.db表的相应记录都消失了。
DELETE FROM mysql.user WHERE Host='localhost' AND User='Emily';
FLUSH PRIVILEGES;
权限管理
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
让其他主机能访问MySQL服务
# 查看防火墙服务是否开启
systemctl status firewalld
# 查看允许通过的服务
firewall-cmd --permanent --list-all
# 放开3306端口
firewall-cmd --permanent --add-port=3306/tcp
# 使操作生效
firewall-cmd --reload
安装过程中遇到的问题
问题1
问题1
[root@poc bin]# ./mysqld --initialize --user=mysql
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:
- 根据内容缺少了libaio.so.1的依赖库,所以进行安装
yum install -y libaio
问题2
问题2
[root@poc mysql]# bin/mysqld_safe --user=mysql &
[1] 10771
[root@poc mysql]# 2023-03-18T08:38:16.242300Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
解决:
- 权限问题
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
问题3
问题3
[root@poc mariadb]# tail -1 /var/log/mariadb/mariadb.log
2023-03-18T08:51:12.680039Z 0 [ERROR] [MY-011811] [Server] Can't start server: can't check PID filepath: No such file or directory
解决:
- 权限问题
# 找到pid的存储位置
cat /etc/my.cnf
# 修改其对象的权限
mkdir -p /var/run/mariadb
chown -R mysql:mysql /var/run/mariadb/