如何在 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 启动时会读取这些文件。
- 创建一个新的配置文件,例如
custom.cnf
:
sudo nano /etc/my.cnf.d/custom.cnf
- 在文件中添加你的自定义配置。例如,如果你想修改最大连接数和缓存大小,可以添加如下配置:
[mysqld]
max_connections = 100
innodb_buffer_pool_size = 512M
- 保存并关闭文件。
请根据你的实际需要调整这些值。更多配置选项和详细信息,请参考 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';"