MySQL 是一个流行的关系型数据库管理系统,常用于 Web 应用程序的开发和部署。本教程将向您介绍如何在 CentOS 8 服务器上编译安装 MySQL 8.0.29。
在安装 MySQL 之前,需先安装编译 MySQL 所需的工具和库文件:
sudo dnf install -y gcc-c++ ncurses-devel cmake
MySQL 编译时需要一些依赖库,先安装这些库:
sudo dnf install -y libevent-devel libaio-devel
从 MySQL 官网 下载源代码,本教程使用的版本是 MySQL 8.0.29:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.29.tar.gz
将下载的文件解压:
tar -zxvf mysql-8.0.29.tar.gz
进入源代码目录,使用 cmake 工具进行配置,然后编译安装 MySQL:
cd mysql-8.0.29
sudo cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DWITH_DEBUG=0
sudo make
sudo make install
在编译过程中,-DCMAKE_INSTALL_PREFIX
用于指定 MySQL 的安装目录(默认为 /usr/local/mysql
)。
MySQL 应该使用特定的用户和组来运行。然后,我们添加 mysql
用户和 mysql
组:
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
使用以下命令初始化 MySQL 数据库:
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql
sudo /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
--initialize-insecure
表示初始化数据库时直接创建空密码的 root
用户,安全性较低,因此不建议在生产环境中使用;--user
指定运行 MySQL 的用户名;--basedir
指定 MySQL 的安装目录;--datadir
指定 MySQL 的数据目录。使用以下命令启动 MySQL:
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
用以下命令设置 root
用户的密码:
sudo /usr/local/mysql/bin/mysqladmin -u root password 'new_password'
可以使用以下命令测试 MySQL 是否正常工作:
/usr/local/mysql/bin/mysql -u root -p
然后,在 MySQL 提示符下输入以下命令测试:
SHOW DATABASES;
我们可以看到数据库列表,表明 MySQL 安装成功:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
在步骤五中,使用了 -DENABLED_LOCAL_INFILE=1
,这是为了让 MySQL 支持本地数据导入。这样在导入数据时就不需要使用远程连接了。
在步骤七中使用了 --initialize-insecure
,这种方法虽然简单,但不够安全,建议在生产环境中使用 --initialize
命令初始化数据库并设置 root
用户密码。
以上是 CentOS8 部署 LNMP 环境之编译安装 MySQL 的详细过程。
本文链接:http://task.lmcjl.com/news/14099.html