CentOS安装MySQL,并实现远程登录
安装MySQL
1. 下载并安装 MySQL Yum 仓库包
打开 https://dev.mysql.com/downloads/repo/yum/
# 下载 RPM 包
wget https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
# 安装 RPM 包
sudo dnf install mysql84-community-release-el9-1.noarch.rpm
#下载并安装
sudo dnf install https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
mysql84-community-release-el9-1.noarch.rpm:代表MySQL8.4,Linux内核9
2. 安装 MySQL 服务器和客户端
借助 dnf
命令来安装 MySQL 服务器和客户端。
sudo dnf install mysql-community-server mysql-community-client
3. 启动并设置 MySQL 服务
安装完成之后,启动 MySQL 服务,并且设置为开机自启。
# 启动 MySQL 服务
sudo systemctl start mysqld
# 设置 MySQL 服务开机自启
sudo systemctl enable mysqld
#启动 MySQL 服务,并设置设置 MySQL 服务开机自启
sudo systemctl enable --now mysqld
4. 查看初始密码
MySQL 初次启动时会生成一个临时密码,你可以通过以下命令查看。
sudo grep 'temporary password' /var/log/mysqld.log
5. 连接到 MySQL 并修改密码
使用临时密码连接到 MySQL 服务器,然后修改密码。
# 连接到 MySQL 服务器
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
请把 YourNewPassword
替换成你自己设定的强密码。
注意了,默认的密码策略,需要:大写英文 + 特殊字符 + 数字
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_123';
也是可以修改密码校验策略的,但需要安装密码验证插件
但是有个前提,你还是需要先按它的要求修改第一次密码,才能安装密码验证策略插件
1、先按照mysql的要求,修改一次密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_123';
2、退出mysql
exit
3、重新登录mysql
mysql -u root -p'Root_123'
4、安装密码验证插件
install plugin validate_password soname 'validate_password.so';
5、查看是否启用了插件
select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';
+-------------------+---------------+
| plugin_name | plugin_status |
+-------------------+---------------+
| validate_password | ACTIVE |
+-------------------+---------------+
输出这样的内容,表示成功启用
查看验证策略的键、值信息
SHOW VARIABLES LIKE 'validate_password%';
对于高版本的mysql,例如mysql 8,验证策略的key,是 validate_password.xxx
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM|
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
对于低版本的mysql,例如mysql 5.7,验证策略的key,是 validate_password_xxx
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM|
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
然后我们修改密码策略和密码长度
我的策略信息的 key ,是 validate_password.xxx
这个格式的,所以按照如下进行设置:
设置密码校验策略为:0(只验证密码长度)
set global validate.password_policy=0;
设置密码最低长度=N,例如设置密码最低长度=6,也就是密码最少要设置6个字符及以上
set global validate.password_length=6;
好了,现在密码就可以按照你刚才配置的策略,来进行设置密码了
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
下面是一系列 SQL 语句,可用于调整密码验证策略,之后把 root
用户的密码设置为 root
:
-- 关闭用户名检查
SET GLOBAL validate_password.check_user_name = FALSE;
-- 将密码长度要求设置为 4
SET GLOBAL validate_password.length = 4;
-- 把大小写字母计数要求设为 0
SET GLOBAL validate_password.mixed_case_count = 0;
-- 把数字计数要求设为 0
SET GLOBAL validate_password.number_count = 0;
-- 把特殊字符计数要求设为 0
SET GLOBAL validate_password.special_char_count = 0;
-- 将密码策略设为 LOW
SET GLOBAL validate_password.policy = LOW;
-- 修改 root 用户的密码为 root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
-- 刷新权限
FLUSH PRIVILEGES;
实现远程登录
1. 确保 MySQL 服务已启动
在 CentOS 虚拟机中执行以下命令来启动 MySQL 服务并设置其开机自启:
sudo systemctl start mysqld
sudo systemctl enable mysqld
2. 配置 MySQL 允许远程连接
修改 MySQL 配置文件, /etc/my.cnf
或 /etc/my.cnf.d/mysql-server.cnf
,
sudo vi /etc/my.cnf
找到 bind-address = 127.0.0.1
这一行,将其注释或修改为:
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
保存配置文件后,重启 MySQL 服务:
sudo systemctl restart mysqld
3. 创建远程连接用户并授权
在 CentOS 中登录 MySQL:
mysql -u root -p
执行以下 SQL 语句来创建用户并授权(请将 your_user
和 your_password
替换为实际的用户名和密码):
-- 创建用户
CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
通过以下命令查看具体的密码策略要求:
SHOW VARIABLES LIKE 'validate_password%';
下面是一系列 SQL 语句,可用于调整密码验证策略:
-- 关闭用户名检查
SET GLOBAL validate_password.check_user_name = FALSE;
-- 将密码长度要求设置为 4
SET GLOBAL validate_password.length = 4;
-- 把大小写字母计数要求设为 0
SET GLOBAL validate_password.mixed_case_count = 0;
-- 把数字计数要求设为 0
SET GLOBAL validate_password.number_count = 0;
-- 把特殊字符计数要求设为 0
SET GLOBAL validate_password.special_char_count = 0;
-- 将密码策略设为 LOW
SET GLOBAL validate_password.policy = LOW;
-- 刷新权限
FLUSH PRIVILEGES;
4. 开放 MySQL 端口(防火墙设置)
允许 3306 端口通过防火墙:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
5. 获取虚拟机 IP 地址
在 CentOS 中执行以下命令获取 IP 地址:
ip addr show
记录 inet
字段的 IP 地址,例如 192.168.1.100
。
6. 本地连接(以 MySQL Workbench 为例)
-
打开 MySQL Workbench,点击 “+” 创建新连接。
-
填写以下信息:
- 连接名:自定义名称,如
VM - CentOS - MySQL
。 - 主机名:虚拟机 IP 地址,如
192.168.1.100
。 - 端口:3306。
- 用户名:之前创建的用户,如
your_user
。 - 密码:之前设置的密码。
- 连接名:自定义名称,如
-
点击 “测试连接”,若成功则保存并连接。
注意事项
- 如果虚拟机使用 NAT 模式,需在虚拟机软件中配置端口转发(主机端口 → 3306)。
- 生产环境建议绑定特定 IP(如
bind-address = 192.168.1.100
),而非0.0.0.0
。 - 确保本地防火墙(如 Windows Defender)未阻止 3306 端口。
MySQL 常用命令
# 服务管理
# 启动 MySQL 服务
systemctl start mysqld
# 第一次启动后,查看 MySQL 初始化密码
grep 'temporary password' /var/log/mysqld.log
# 重启 MySQL 服务
systemctl restart mysqld
# 停止 MySQL 服务
systemctl stop mysqld
# 查看 MySQL 服务状态
systemctl status mysqld
# 设置 MySQL 服务开机自启
systemctl enable mysqld
# 重新加载 systemd 管理器配置
systemctl daemon-reload
# 进程与版本信息查看
# 查看 MySQL 相关进程
ps -ef | grep mysql
# 查看 MySQL 网络连接信息
netstat -atp | grep mysql
# 查看 MySQL 版本
mysql --version
# 登录 MySQL
# 以 root 用户登录,需输入密码
mysql -u root -p
# 数据库操作
# 查看所有数据库
show databases;
# 创建新数据库
create database 数据库名;
# 删除数据库
drop database 数据库名;
# 使用指定数据库
use 数据库名;
# 表操作
# 查看当前数据库下所有表
show tables;
# 创建新表
create table 表名 (
字段1 数据类型,
字段2 数据类型,
...
);
# 删除表
drop table 表名;
# 查看表结构
desc 表名;
# 数据操作
# 查询表中所有数据
select * from 表名;
# 按条件查询数据
select * from 表名 where 条件;
# 插入数据
insert into 表名 (字段1, 字段2, ...) values (值1, 值2, ...);
# 删除数据
delete from 表名 where 条件;
# 更新数据
update 表名 set 字段='新值' where 条件;
# 用户管理
# 创建新用户
create user '用户名'@'主机' identified by '密码';
# 授予用户权限
grant 权限 on 数据库名.表名 to '用户名'@'主机';
# 撤销用户权限
revoke 权限 on 数据库名.表名 from '用户名'@'主机';
# 删除用户
drop user '用户名'@'主机';
# 刷新权限
flush privileges;
# 备份与恢复
# 备份数据库
mysqldump -u 用户名 -p 数据库名 > 备份文件名.sql
# 恢复数据库
mysql -u 用户名 -p 数据库名 < 备份文件名.sql
以下是优化后的内容,对表述进行了整理和完善,增强了可读性与专业性:
常见问题
问题一:MySQL 已配置客户端服务器 UTF - 8 编码,但无法输入中文
当 MySQL 配置了客户端服务器 UTF - 8 编码却不能输入中文时,首先要确保在终端命令行中能够正常输入中文。可以通过以下命令查看终端的语言环境设置:
[root@VM - 8 - 5 - centos ~]$ env | grep LANG
LANG=en_US.utf8
若 LANG
不是支持中文的编码(如 zh_CN.utf8
),可修改相关配置文件(如 /etc/locale.conf
)来调整语言环境,之后重启终端使设置生效。
问题二:安装时遇到密钥过期问题
在安装过程中,可能会遇到如下密钥过期问题:
Failing package is: mysql - community - client - 5.7.39 - 1.EL7.86_64
GPG Keys are configured as: file:///etc/pki/rpm - gpg/RPM - GPG - KEY - mysql
解决方案:
执行以下命令导入新的 MySQL GPG 密钥:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
导入成功后,再次尝试安装 MySQL 相关软件包。