柏虎资源网

专注编程学习,Python、Java、C++ 教程、案例及资源

Rocky 9.6 安装 MySQL8.0 超详细教程,一篇就够!

1.环境

虚拟机环境,个人玩耍,当然要使用虚拟机,不然哪有那么多钱,买那么多电脑,哪怕你去买阿里云,也只不过是虚拟机。

虚拟机运行系统:Virtual Box

操作系统:Rocky9.6

2.安装依赖

我的这台用于试验的虚拟机系统,目前啥都还没有安装,所以从依赖开始安装,安装MySQL需要安装最小的依赖如下:

如果以上依赖都还没有安装,那么命令如下:

sudo dnf install -y gcc gcc-c++ make cmake ncurses-devel openssl-devel openssl bison libaio-devel zlib-devel libtirpc-devel libcurl-devel wget tar

当然,我不想重复安装,所以我在安装之前,检查了一遍依赖是否已经安装了

rpm -q gcc
rpm -q gcc-c++
rpm -q make
rpm -q cmake
rpm -q ncurses-devel
rpm -q openssl-devel
rpm -q openssl
rpm -q bison
rpm -q libaio-devel
rpm -q zlib-devel
rpm -q libtirpc-devel
rpm -q libcurl-devel
rpm -q wget
rpm -q tar

其中,openssl、wget、tar 我已经安装了,所以省略,最终我的安装命令如下:

sudo dnf install -y gcc gcc-c++ make cmake ncurses-devel openssl-devel bison libaio-devel zlib-devel libtirpc-devel libcurl-devel

在运行命令时,先运行

sudo dnf config-manager --set-enabled crb
sudo dnf install -y epel-release  # 安装 EPEL 仓库
sudo dnf clean all  # 清除包管理器缓存
sudo dnf makecache # 强制重新下载并生成仓库元数据缓存

因为libtirpc-devel找不到安装包,这样就可以了。

3.下载解压

创建源码目录,保持系统简洁,有利于管理源码。

sudo mkdir -p /usr/local/src/mysql
cd /usr/local/src/mysql

下载

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36.tar.gz
tar xzf mysql-8.0.36.tar.gz

4.安装准备

4.1.创建安装目录

sudo mkdir -p /u01/mysql

4.2.创建用户和组

sudo groupadd mysql  # 创建组
sudo useradd -r -g mysql -s /bin/false mysql  # 创建用户mysql并且组是mysql,设置

-s /bin/false 选项设置新用户的默认 Shell 为 /bin/false 。这意味着该用户无法使用 Shell 进行交互式登录系统。

4.3.编译配置

cd mysql-8.0.36

创建编译目录并进行配置

mkdir build
cd build

cmake .. \
-DWITH_BOOST=../boost \
-DCMAKE_INSTALL_PREFIX=/u01/mysql \  # 主程序安装路径改为/u01/mysql
-DMYSQL_DATADIR=/u01/mysql/data \    # 数据目录同步改为/u01/mysql/data
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \  # 套接字路径保持默认,避免权限问题
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=1

运行后,出错

需要安装

yum install gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc

安装完后,再次运行


tar xfj
/usr/local/src/mysql/mysql-8.0.36/boost/boost_1_77_0.tar.bz2解压失败。那就重新下载呗

我试了很多个下载地址,包括官网下载,文件都是不对的。下面这个是正确的包

wget https://sourceforge.net/projects/boost/files/boost/1.77.0/boost_1_77_0.tar.bz2

验证,解压

file boost_1_77_0.tar.bz2
tar -xjf boost_1_77_0.tar.bz2

重新运行 cmake,出现下面错误

缺少 rpcgen 工具,重新安装

sudo dnf install -y libtirpc-devel rpcgen

验证

which rpcgen

清理,重新运行 CMake

rm CMakeCache.txt
# 用以下命令,有调整
cmake .. -DWITH_BOOST=../boost -DWITH_GROUP_REPLICATION=ON -DDOWNLOAD_BOOST=1 -DCMAKE_INSTALL_PREFIX=/u01/mysql -DMYSQL_DATADIR=/u01/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=bundled -DWITH_LIBWRAP=0 -DENABLED_LOCAL_INFILE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_SYSTEMD=1 

5.编译并安装

编译

# 编译(根据CPU核心数调整-j参数,加速编译)
make -j$(nproc)  # 这个编译很慢,建议  make 就行

安装

sudo make install

6.配置权限

sudo chown -R mysql:mysql /u01/mysql

7.初始化数据库

cd /u01/mysql
sudo bin/mysqld --initialize --user=mysql --basedir=/u01/mysql --datadir=/u01/mysql/data

8. 配置系统服务

touch /etc/systemd/system/mysqld.service

nano /etc/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/u01/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/u01/mysql --datadir=/u01/mysql/data --plugin-dir=/u01/mysql/lib/plugin
LimitNOFILE=5000
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

创建配置文件

touch /etc/my.cnf

编辑 nano/etc/my.cnf

[mysqld]
basedir=/u01/mysql
datadir=/u01/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/u01/mysql/data/error.log
pid-file=/u01/mysql/data/mysql.pid

配置开机启动

sudo systemctl daemon-reload    # 修改配置需要执行
sudo systemctl enable mysqld

9.启动

启动

sudo systemctl start mysqld

查看状态

sudo systemctl status mysqld

权限,一般都是SELinux策略阻碍了运行:


# 修正数据目录权限
sudo chown -R mysql:mysql /u01/mysql/data
sudo chmod -R 750 /u01/mysql/data

# 修正插件目录权限
sudo chown -R mysql:mysql /u01/mysql/lib/plugin
sudo chmod -R 750 /u01/mysql/lib/plugin

# 修正MySQL安装目录权限
sudo chown -R mysql:mysql /u01/mysql
sudo chmod -R 755 /u01/mysql
sudo chcon -R -t mysqld_db_t /u01/mysql/data

# 确保 mysql 用户可读
sudo chmod 644 /etc/my.cnf    # 保持当前权限(理论上够用,但需结合 SELinux)
# 更严格的权限(推荐)
sudo chmod 640 /etc/my.cnf
sudo chown root:mysql /etc/my.cnf  # 确保 mysql 组可读
sudo chcon -t etc_t /etc/my.cnf


# 安装策略工具(若未安装)
sudo yum install policycoreutils-python-utils -y   (已安装略)
# 生成并加载自定义策略
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mysqld_custom
sudo semodule -i mysqld_custom.pp

# 设置必要的布尔值
sudo setsebool -P mysqld_connect_any=1 mysqld_write_data=1


# 标准路径标签修复
sudo semanage fcontext -a -t mysqld_db_t "/u01/mysql/data(/.*)?"
sudo semanage fcontext -a -t bin_t "/u01/mysql/bin(/.*)?"
sudo restorecon -Rv /u01/mysql

# 验证服务文件路径
sudo cat /etc/systemd/system/mysqld.service | grep -E 'ExecStart|User'

# 重载服务配置
sudo systemctl daemon-reload

重启,停止

sudo systemctl restart mysqld
sudo systemctl sop mysqld

登录测试

查初始化密码,我查不到,然后用一下方式重置密码

echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;" > /tmp/reset.sql
sudo chown mysql:mysql /tmp/reset.sql
sudo -u mysql /u01/mysql/bin/mysqld --init-file=/tmp/reset.sql --console &
/u01/mysql/bin/mysql -u root -p

重新修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

完成验证。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言