Rocky Linux 9 源码安装 MySQL

作者: 温新

图书: 【Rocky Linux 9 源码安装 LNMP】

阅读: 215

时间: 2024-03-01 09:46:53

hi,我是温新,一名 PHPer

源码安装 MySQL 是一个漫长的过程。根据机器性能的不同,编译的时间也会不同。

我虚拟机中给系统的配置比较低,之前一般 2 小时左右就可以完成。但有的时候需要 5-6 个小时,源码安装 MySQL,时间这么久,图啥?

下面就开始安装吧。

注意:需要为系统至少 4G 内存。不然编译的过程中会报内存不够的错误。等 MySQL 安装完成之后,再把内存调小。

卸载 mariadb

# 查看是否自带数据
rpm -qa|grep mariadb   

# 载自带数据库
dnf -y remove mariadb* boost-*

创建用户与组

cat /etc/group  | grep mysql
cat /etc/passwd | grep mysql

# 创建mysql用户组
groupadd mysql

# 创建mysql用户并禁止登陆
useradd -g mysql mysql -M -s /sbin/nologin/

删除 my.cnf 配置文件

rm -rf /etc/my.cnf
rpm -qa | grep mysql

安装 mysql 8.1.0

cd /usr/local/src

下载与安装

# 下载
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.1.0.tar.gz

# 解压
tar -zxvf mysql-boost-8.1.0.tar.gz
cd mysql-8.1.0/
mkdir build
cd build

# 预编译
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/software/mysql-8.1.0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_DATADIR=/usr/local/software/mysql-8.1.0/data \
-DWITH_BOOST=/usr/local/src/mysql-8.1.0/boost \
-DDOWNLOAD_BOOST=1 

# 安装
make && make install

修改所属用户与组

chown -R mysql:mysql /usr/local/software/mysql-8.1.0/
chmod -R 755 /usr/local/software/mysql-8.1.0/

初始化

cd /usr/local/software/mysql-8.1.0/bin

./mysqld --initialize --user=mysql --basedir=/usr/local/software/mysql-8.1.0 --datadir=/usr/local/software/mysql-8.1.0/data --character-set-server=utf8

【若出现如下问题】

./mysqld: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

【解决方法】

dnf -y remove openssl-devel

dnf install -y compat-openssl11

然后,再次执行初始化操作。

# 初始化后生成的密码
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: /EEZ5F0jS=oZ

安装 SSL

/usr/local/software/mysql-8.1.0/bin/mysql_ssl_rsa_setup

出现 WARNING: mysql_ssl_rsa_setup is deprecated and will be removed in a future version. Use the mysqld server instead. 可以不管。

启动 mysql

/usr/local/software/mysql-8.1.0/bin/mysqld_safe --user=mysql &

启动连接后,会阻塞着。此时,再开一个新窗口进行登陆 mysql。

连接 mysql

1)连接 mysql

# 输入初始化生成的密码
/usr/local/software/mysql-8.1.0/bin/mysql -uroot -p

2)修改密码

# 注意:生产环境千万不要修改成这么简单的密码
mysql> alter user 'root'@'localhost' identified by "123456";

3)添加远程登录用户

# 添加远程登陆用户
mysql> create user root@'%' identified by '123456';
# 为远程用户分配权限
mysql> grant all privileges on *.* to root@'%';
# 刷新权限
mysql> flush privileges;

# 查看当前用户,host为 % 的用户表示远程登陆用户
mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

防火墙允许 3306

# 开启防火墙
systemctl start firewalld.service 
# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 刷新
firewall-cmd --reload
# 关闭防火墙
systemctl stop firewalld.service 

设置环境变量

vim /etc/profile

追加如下内容并保存退出

export PATH=$PATH:/usr/local/software/mysql-8.1.0/bin

刷新

# 刷新
source /etc/profile

设置开机自启

vim /usr/lib/systemd/system/mysql810.service

添加如下内容,保存并退出

[Unit]
Description=MySQL Server(8.0)
Documentation=main: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=/usr/local/software/mysql-8.1.10/bin/mysqld
LimitNOFILE=5000

设置开机自启

systemctl enable mysql810.service

相关操作(了解,这里不操作)

# 启动mysql服务
systemctl start mysql810.service		
# 重启mysql服务
systemctl restart mysql810.service	
# 查询mysql状态
systemctl status mysql810.service		
# 取消开机自启
systemctl disable mysql810.service	
请登录后再评论