在 CentOS 8 服务器上安装 MySQL可以按照以下步骤进行操作:
1、更新系统软件包列表
sudo yum update
2、安装 MySQL 服务器
sudo yum install mysql-server
3、启动 MySQL 服务:
sudo systemctl start mysqld
4、设置 MySQL 在系统启动时自动启动
sudo systemctl enable mysqld
这将配置 MySQL 服务在系统启动时自动启动。
5、配置防火墙以允许 MySQL 连接
sudo firewall-cmd --permanent --zone=public --add-service=mysql
sudo firewall-cmd --reload
6、检查 MySQL 服务状态:
sudo systemctl status mysqld
这将显示 MySQL 服务的状态,确保它正在运行。
在 Debian 10 x64 (buster)服务器上安装特定版本的 MySQL可以按照以下步骤进行操作:
1、添加 MySQL 官方存储库
wget https://dev.mysql.com/get/mysql-apt-config_0.8.18-1_all.deb
这将下载并安装 MySQL 官方的存储库配置文件。
dpkg -i mysql-apt-config_0.8.18-1_all.deb
在安装过程中,你将看到一个配置界面。选择 “MySQL Server & Cluster”,然后选择你想要安装的特定版本,这里选择的是MySQL 8.0。
选择OK。
2、更新软件包列表
apt update
执行该命令可能报一下错误:
root@vultr:~# apt update
Hit:1 https://apprepo.vultr.com/debian universal InRelease
Get:2 http://repo.mysql.com/apt/debian buster InRelease [22.1 kB]
Hit:3 https://deb.debian.org/debian buster InRelease
Hit:4 https://deb.debian.org/debian-security buster/updates InRelease
Hit:5 https://deb.debian.org/debian buster-updates InRelease
Hit:6 https://debian.mirror.constant.com buster InRelease
Err:2 http://repo.mysql.com/apt/debian buster InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29
Reading package lists... Done
W: GPG error: http://repo.mysql.com/apt/debian buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29
E: The repository 'http://repo.mysql.com/apt/debian buster InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
这个错误通常是由于缺少 MySQL 存储库的公钥导致的。要解决这个问题,需要导入 MySQL 存储库的公钥。
执行以下命令来导入 MySQL 存储库的公钥:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
执行以下命令再刷新软件包列表
apt update
3、安装 MySQL 服务器
apt install mysql-server
在这一步中,将安装第一步选择的特定版本的 MySQL。
安装过程中会提示设置 MySQL root 用户的密码。请设置一个安全且强密码,并记住它。如果不填写则默认为空密码。
设置密码:
确认密码:
选择密码的加密方式Use Strong Password Encryption (RECOMMENDED) ,然后按确认Enter。
这个是MySQL 8推荐使用的密码加密方式,到这一步MySQL就安装成功了。
4、配置防火墙以允许 MySQL 连接
执行以下命令来允许传入的 MySQL 连接请求
ufw allow mysql
这将在防火墙规则中添加一条允许 MySQL 端口(默认为 3306)的规则。
执行以下命令来确认规则已被添加
ufw status
应该能够看到类似以下输出的规则:
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
3306/tcp ALLOW Anywhere
...
现在,防火墙已经允许传入的 MySQL 连接请求通过指定的端口。
安装完 MySQL 后,进入 MySQL:
1、输入以下命令以进入 MySQL
mysql -u root -p
按下 Enter 键后,系统将提示你输入密码。
如果你在安装过程中设置了 root 用户的密码,请输入该密码并按下 Enter 键。
如果你没有设置 root 用户的密码,直接按下 Enter 键即可。
如果密码正确,你将成功进入 MySQL Shell,并看到类似以下的提示:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26 Source distribution
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
2、在 MySQL Shell 中执行以下命令修改 root 用户在本地主机(localhost)的登录密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
将 new_password
替换为你想要设置的新密码。
3、授权 root 用户并允许从任意主机登录
#创建一个名为 'root' 的用户,允许该用户从任意主机登录,并设置密码
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
#授予 root 用户在任意主机上对所有数据库和所有表的全部权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
将 password
替换成你的密码。
注意:如果安装的MySQL版本是5.7的话,还要编辑MySQL服务器的配置文件。
- 在Debian上,MySQL的配置文件通常位于
/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/mysql/my.cnf
。 - 找到 bind-address 配置项,并设置IP地址为0.0.0.0
bind-address = 0.0.0.0
- 保存并关闭配置文件。
- 重新启动MySQL服务器:
sudo systemctl restart mysql
查询特定用户root的信息:
mysql> SELECT user, host, authentication_string, plugin, password_expired, account_locked FROM user WHERE user = 'root';
+------+---------------+-------------------------------------------+-----------------------+------------------+----------------+
| user | host | authentication_string | plugin | password_expired | account_locked |
+------+---------------+-------------------------------------------+-----------------------+------------------+----------------+
| root | % | *6063C78456AA048BAF36BE1104D12D547834DFEA | mysql_native_password | N | N |
| root | localhost | *81F5E21E35407D114A6CD4A731AEBFB6AF209E1B | mysql_native_password | N | N |
+------+---------------+-------------------------------------------+-----------------------+------------------+----------------+
对于下方授权语句的详细介绍:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
具体来说,这个语句的含义是:
GRANT
: 这是授权语句的关键字,用于指定要执行授权操作。ALL PRIVILEGES
: 这表示授予用户所有权限,包括SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER 等等,即对数据库的所有操作权限。*.*
: 这指定了要授权的数据库和表。*.*
表示所有数据库和所有表。你也可以根据需要指定特定的数据库或表。TO 'root'@'%'
: 这表示将权限授予用户名为 ‘root’ 的用户,并允许从任意主机(通配符 ‘%’ 表示任意主机)进行连接。
因此,执行这个语句后,root 用户将具有在任意主机上对所有数据库和所有表执行任意操作的权限。
但是授权 root 用户并允许从任意主机登录会降低数据库的安全性,并增加潜在的风险。所以可以使用更安全的方法来设置 MySQL。
-
授权root用户只能从指定的IP地址(192.168.7.100)登录, 并且只授予某个数据库(yourdatabase)的权限。
#yourpassword替换为你要设置的登录密码。 CREATE USER 'root'@'192.168.7.100' IDENTIFIED BY 'yourpassword'; #yourdatabase替换为你要授权的数据库。 GRANT ALL PRIVILEGES ON yourdatabase.* TO 'root'@'192.168.7.100';
-
创建一个新的名为
yourusername
,可以在任意主机(%
)登录,密码为yourpassword
的MySQL 用户,并且只授予某个数据库(yourdatabase)的权限。#将 'yourusername' 替换为你要创建的用户名,'yourpassword' 替换为你要设置的密码。 CREATE USER 'yourusername'@'%' IDENTIFIED BY 'yourpassword'; #yourdatabase替换为你要授权的数据库。 GRANT ALL PRIVILEGES ON yourdatabase.* TO 'yourusername'@'%';
4、刷新权限
FLUSH PRIVILEGES;
5、查询MySQL的用户信息:
选择mysql数据库:
选择存储用户信息的正确数据库。一般来说,用户信息存储在 mysql 数据库的 user 表中。执行以下命令切换到 mysql 数据库:
USE mysql;
查询mysql数据库中用户信息:
SELECT user, host, authentication_string, plugin, password_expired, account_locked FROM user WHERE user = 'username';
将 ‘username’ 替换为你要查询信息的具体用户名。
检索所有用户的用户名、主机、密码哈希值、插件、密码过期状态以及账户锁定状态。你可以根据需要对查询进行过滤,例如,添加 WHERE 条件来限制查询特定用户root的信息:
mysql> SELECT user, host, authentication_string, plugin, password_expired, account_locked FROM user WHERE user = 'root';
+------+---------------+-------------------------------------------+-----------------------+------------------+----------------+
| user | host | authentication_string | plugin | password_expired | account_locked |
+------+---------------+-------------------------------------------+-----------------------+------------------+----------------+
| root | localhost | *81F5E21E35407D114A6CD4A731AEBFB6AF209E1B | mysql_native_password | N | N |
+------+---------------+-------------------------------------------+-----------------------+------------------+----------------+
6、删除指定MySQL中允许登录的用户
1、选择正确的数据库:mysql
在登录后,选择存储用户信息的正确数据库。一般来说,用户信息存储在 mysql 数据库的 user 表中。执行以下命令切换到 mysql 数据库:
USE mysql;
2、删除指定用户:根据用户名和相应的主机名或 IP 地址
DELETE FROM user WHERE user = 'username' AND host = 'host';
将 ‘username’ 替换为要删除的用户名,将 ‘host’ 替换为相应的主机名或 IP 地址。
3、刷新权限
FLUSH PRIVILEGES;
Navicat连接MySQL可能出现的问题
这个问题表示:Navicat 无法加载名为 ‘caching_sha2_password’ 的身份验证插件。通常是由于 Navicat 版本较旧或不兼容MySQL 8.0 的新的身份验证插件引起的。‘caching_sha2_password’ 是 MySQL 8.0 默认使用的身份验证插件,而 Navicat 较早的版本可能不支持该插件。
1、升级 Navicat 版本:确保你使用的是最新版本的 Navicat。新版本通常会提供对新的身份验证插件的支持。
2、更改 MySQL 用户的身份验证插件:在 MySQL 中,你可以将用户的身份验证插件更改为旧的插件,以使其与 Navicat 兼容。例如,你可以将用户的身份验证插件更改为 ‘mysql_native_password’。你可以使用以下命令更改用户的身份验证插件:
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
将 ‘username’ 替换为你的用户名,‘localhost’ 替换为你的主机名,‘password’ 替换为你的密码。
卸载MySQL
1、在 Debian 10 x64 (buster)服务器上卸载MySQL
-
停止 MySQL 服务器
systemctl stop mysql
-
卸载 MySQL 包。执行以下命令将卸载 MySQL 相关的软件包:
apt remove --purge mysql-server mysql-client mysql-common
这将删除 MySQL 服务器、客户端和共享文件。
-
删除 MySQL 配置和数据文件。执行以下命令删除 MySQL 配置文件和数据文件:
rm -rf /etc/mysql rm -rf /var/lib/mysql
注意:请谨慎执行此步骤,确保你没有重要的数据在 MySQL 数据目录中。
-
清理残留的文件和依赖项。执行以下命令来清理可能残留的文件和依赖项:
apt autoremove apt autoclean
这将删除不再需要的依赖项和清理存储的软件包文件。
现在,MySQL 已经被卸载。请注意,此操作将删除所有与 MySQL 相关的文件和数据。在执行卸载操作之前,请确保你已经备份了重要的数据,并且确认你不再需要 MySQL 的任何数据和配置。