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'@'%';

📌 参数说明:

  1. GRANT ALL PRIVILEGES: 授予用户所有权限。包括创建数据库、表,插入、更新、删除数据等所有操作的权限。如果你只想授予特定权限,请将 ALL PRIVILEGES 替换为你所需的权限列表,例如 SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER 等。

  2. ON : 指定授予权限的范围。 database_name.* 只对 database_name 数据库中的所有表授予权限。 *.* 表示所有数据库和所有表。

  3. TO ‘username’@’%’: 指定被授予权限的用户及其连接来源。username 是用户名,localhost 表示仅允许本地连接。% 表示允许从任何主机连接,或指定连接的主机名或 IP 地址,例如:TO 'username'@'172.16.18.13'

  4. WITH GRANT OPTION: (可选)允许该用户将其拥有的权限再授予其他用户。这意味着 username 可以将其获得的所有权限授予其他人。

3.4 刷新权限

1FLUSH PRIVILEGES;

这将刷新 MySQL 的权限表,以便使刚才的更改生效。

3.5 切换到新创建的数据库

1USE database_name;

IV. MySQL 远程连接

4.1 允许远程连接

默认情况下,MySQL 只允许本地连接。要允许远程连接,你需要修改 MySQL 的配置文件(通常是 my.cnfmy.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