I. MySQL 安装
1.1 添加 Yum 资源库
1、下载资源库
https://dev.mysql.com/downloads/repo/yum/
2、选择并下载适用于您平台的发布软件包。
1wget https://dev.mysql.com/get/mysql8x-community-release-elx-1.noarch.rpm
3、安装下载的发布软件包。 软件包文件格式为:
1mysql84-community-release-{platform}-{version-number}.noarch.rpm
例如,安装为系统下载的 RPM:
1dnf localinstall mysql84-community-release-{platform}-{version-number}.noarch.rpm
您可以使用以下命令检查 MySQL Yum 资源库是否已成功添加并启用(对于启用了 dnf
的系统,请将命令中的 yum
替换为 dnf
):
1dnf repolist enabled | grep mysql.*-community
1.2 禁用默认模块
(仅限 EL8 系统)基于 EL8 的系统(如 RHEL8 和 Oracle Linux 8)包含一个默认启用的 MySQL 模块。 除非禁用该模块,否则它会掩盖 MySQL 资源库提供的软件包。 要禁用包含的模块并使 MySQL 资源库软件包可见,请使用以下命令(对于启用了 dnf 的系统,请将命令中的 yum 替换为 dnf):
1dnf module disable mysql
1.3 安装 MySQL
使用以下命令安装 MySQL(对于启用了 dnf 的系统,请用 dnf 替换命令中的 yum):
1dnf install mysql-community-server
查看 MySQL 版本
1mysql -V
1.4 启动 MySQL
安装完成后,启动 MySQL 服务并通过运行以下命令使其在开机时自动启动:
1systemctl enable mysqld --now
要检查 MySQL 服务器是否正在运行,请键入:
1systemctl status mysqld
II. MySQL 基础配置
2.1 安全配置
默认情况下,MySQL 在首次安装时不受保护。在安装过程中,临时密码被设置为 root 帐户。您可以使用以下命令从日志文件中获取密码:
1grep 'temporary password' /var/log/mysqld.log
保护 MySQL
1mysql_secure_installation
系统将提示您设置 MySQL 的 root 密码并回答一些安全问题:
ℹ️ 输出如下:
Enter password for user root: [Enter temporary password]
New password: [Enter a new password]
Re-enter new password: [Re-enter new password]
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
2.2 修改密码
使用查看到的密码登录 MySQL,可能需要加 -h
参数指定 127.0.0.1
,否则无法登录。
1mysql -u root -p
根据需要修改密码:
1ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
刷新权限
1FLUSH PRIVILEGES;
查看 MySQL 版本
1mysql> SELECT VERSION ();
III. 创建 MySQL 数据库
3.1 创建数据库
1CREATE DATABASE database_name;
3.2 创建用户
1CREATE USER 'username'@'%' IDENTIFIED BY 'password';
在上述命令中,将 username
替换为你想要的用户名,%
表示允许从任何主机连接,并将 password
替换为用户的密码。
3.3 授权用户
1GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';
📌 参数说明:
GRANT ALL PRIVILEGES: 授予用户所有权限。包括创建数据库、表,插入、更新、删除数据等所有操作的权限。如果你只想授予特定权限,请将
ALL PRIVILEGES
替换为你所需的权限列表,例如SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
等。ON : 指定授予权限的范围。
database_name.*
只对database_name
数据库中的所有表授予权限。*.*
表示所有数据库和所有表。TO ‘username’@’%’: 指定被授予权限的用户及其连接来源。
username
是用户名,localhost
表示仅允许本地连接。%
表示允许从任何主机连接,或指定连接的主机名或 IP 地址,例如:TO 'username'@'172.16.18.13'
。WITH GRANT OPTION: (可选)允许该用户将其拥有的权限再授予其他用户。这意味着
username
可以将其获得的所有权限授予其他人。
3.4 刷新权限
1FLUSH PRIVILEGES;
这将刷新 MySQL 的权限表,以便使刚才的更改生效。
3.5 切换到新创建的数据库
1USE database_name;
IV. MySQL 远程连接
4.1 允许远程连接
默认情况下,MySQL 只允许本地连接。要允许远程连接,你需要修改 MySQL 的配置文件(通常是 my.cnf
或 my.ini
):
- 找到配置文件,通常在
/etc/my.cnf
或/etc/mysql/my.cnf
。 - 找到
bind-address
配置项,将其设置为0.0.0.0
以允许所有 IP 连接,或者指定某个具体的 IP。 - (可选)修改默认连接端口(
3306
),例如:3307
。
1[mysqld]
2bind-address = 0.0.0.0
3...
4port = 3307
4.2 创建远程访问用户
参考创建 MySQL 数据库部分
4.3 重新启动服务
1systemctl restart mysqld
4.4 配置防火墙
确保防火墙允许 MySQL 的默认端口(3306
)通过:
- 对于
firewalld
:
1firewall-cmd --permanent --zone=public --add-port=3307/tcp
2firewall-cmd --reload
对于 iptables
:
1iptables -A INPUT -p tcp --dport 3307 -j ACCEPT
4.5 使用客户端连接
使用 MySQL 客户端连接到远程数据库:
1mysql -h remote_host -P 3307 -u username -p database_name
4.6 退出 MySQL
1quit
V. 相关问题
5.1 备份问题
1、使用 mysqldump
命令备份时会报如下错误:
1mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces.
2、授予用户查看所有用户线程/连接的权限:
1GRANT PROCESS ON *.* TO 'username'@'localhost';
X. 参考文档
参考文档1:MySQL repo
参考文档2:Installing MySQL on Linux Using the MySQL Yum Repository