CentOS7.x 上安装并配置 MySQL 8.x

时间:2024-03-29 15:33:45

如何在 CentOS 7 上安装并配置 MySQL 8.x

MySQL 是最流行的开源关系型数据库管理系统之一,被广泛应用于各种网站和应用程序中。

步骤 1:下载并添加 MySQL 8.x 官方 Yum 仓库

首先,打开终端,下载 MySQL Yum 仓库的 rpm 包:

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

下载完成后,添加仓库到你的系统:

sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm

步骤 2:安装 MySQL 8.x

现在你可以使用 Yum 命令安装 MySQL 8.x 了:

sudo yum install mysql-community-server

步骤 3:启动 MySQL 服务并设置开机启动

安装完毕后,启动 MySQL 服务:

sudo systemctl start mysqld

设置 MySQL 服务开机自启:

sudo systemctl enable mysqld

步骤 4:运行安全配置脚本

运行 mysql_secure_installation 脚本,按提示设置密码策略和其他安全选项:

sudo mysql_secure_installation

步骤 5:增加自定义配置文件

MySQL 的默认配置文件通常位于 /etc/my.cnf,你可以在 /etc/my.cnf.d/ 目录下添加自定义配置文件,MySQL 启动时会读取这些文件。

  1. 创建一个新的配置文件,例如 custom.cnf
sudo nano /etc/my.cnf.d/custom.cnf
  1. 在文件中添加你的自定义配置。例如,如果你想修改最大连接数和缓存大小,可以添加如下配置:
[mysqld]
max_connections = 100
innodb_buffer_pool_size = 512M
  1. 保存并关闭文件。

请根据你的实际需要调整这些值。更多配置选项和详细信息,请参考 MySQL 官方文档。

步骤 6:重启 MySQL 服务

为了应用你的配置更改,重启 MySQL 服务:

sudo systemctl restart mysqld

在安装并配置 MySQL 8.x 的过程中,配置账号密码是一个重要的安全措施。以下是如何为你的 MySQL 数据库设置账号密码和进行基础的用户管理的步骤:

步骤 7:初始密码获取

MySQL 8.x 安装完成并首次启动后,系统会自动生成一个临时的 root 密码。你可以通过查看 mysqld 的日志文件来找到这个密码:

sudo grep 'temporary password' /var/log/mysqld.log

记下显示的临时密码,你将在初次登录时使用它。

登录 MySQL

使用以下命令并输入临时密码来登录 MySQL:

mysql -u root -p

系统会提示你输入密码,此处应输入你之前找到的临时密码。

修改 root 密码

在成功登录 MySQL 后,你可以修改 root 用户的密码。为此,可以使用以下 SQL 命令,确保将 your_new_password 替换为你自己的新密码:

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

创建新用户并设置密码

你可能不希望总是使用 root 账户操作数据库,为此,创建新的用户账户是一个好主意。以下是创建新用户并为其设置密码的命令:

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password';

确保将 new_user 替换为新用户的用户名,将 user_password 替换为该用户的密码。

授权新用户

创建用户后,你需要为其分配适当的权限。以下命令将为新用户授予对所有数据库的所有权限(在实际使用中,你可能需要更细粒度的权限控制):

GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'localhost' WITH GRANT OPTION;

刷新权限

在创建新用户或更改权限后,需要刷新 MySQL 的权限设置,以确保更改立即生效:

FLUSH PRIVILEGES;

退出 MySQL

完成所有操作后,你可以使用 exit 命令退出 MySQL:

exit

步骤 7:验证配置

验证你的配置是否生效,可以登录到 MySQL 服务器,然后执行以下命令:

mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';"
mysql -u root -p -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"