Centos项目部署之安装数据库MySQL8

安装数据库 MySQL 8

卸载 MariaDB

安装 MySQL 时可能会与 MariaDB 的文件冲突,因此需要先检查是否已安装 MariaDB,如果已安装,则需要卸载。

bash 复制代码
# 检查是否已安装 MariaDB
rpm -qa | grep -i mariadb

# 如果已安装,关闭 MariaDB 进程
sudo systemctl stop mariadb

# 检查已安装的 MariaDB 相关包
rpm -qa | grep -i mariadb

# 卸载所有 MariaDB 相关包
# 注意:请根据实际列出的包名进行卸载
sudo yum remove mariadb-libs-5.5.68-1.el7.x86_64

如何安装 MySQL

1. 获取下载链接

访问 MySQL 官方 Yum 源,选择适合的版本,右键查看源码以获取下载地址。 例如:dev.mysql.com/get/mysql80...

2. 添加 MySQL Yum 仓库

2.1 下载 MySQL Yum Repository
bash 复制代码
wget -P /usr/local/softpackage https://dev.mysql.com/get/mysql80-community-release-el7.rpm
2.2 安装 MySQL Yum Repository
bash 复制代码
sudo yum install -y /usr/local/softpackage/mysql80-community-release-el7.rpm
2.3 验证仓库是否添加成功
bash 复制代码
sudo yum repolist enabled | grep "mysql.*-community.*"

3. 安装 MySQL 8

bash 复制代码
sudo yum install -y mysql-community-server

4. 启动 MySQL 服务

4.1 启动 MySQL 服务
bash 复制代码
sudo systemctl start mysqld
4.2 检查 MySQL 服务状态
bash 复制代码
sudo systemctl status mysqld

5. 获取初始 root 密码

bash 复制代码
sudo grep 'temporary password' /var/log/mysqld.log

示例输出:请记下这个密码【Ruq?GbFns7hk】。 日志示例:2024-12-30T08:53:50.822866Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Ruq?GbFns7hk

6. 安全配置 MySQL

6.1 登录 MySQL
bash 复制代码
mysql -u root -p

输入刚才获取到的临时密码。

6.2 修改密码
sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword@123';
6.3 创建用户外网 IP 连接

创建一个名为 pzh 的用户,允许从任何主机(%)连接,密码设置为 YourPassword@123

sql 复制代码
CREATE USER 'pzh'@'%' IDENTIFIED BY 'YourPassword@123';
6.4 授予用户权限

授予用户 pzh 对所有数据库(*.*)的全部权限(ALL PRIVILEGES),并允许该用户将权限授予其他用户(WITH GRANT OPTION)。

sql 复制代码
GRANT ALL PRIVILEGES ON *.* TO 'pzh'@'%' WITH GRANT OPTION;
6.5 修改用户身份验证方式

将用户 pzh 的身份验证方式改为 mysql_native_password,以确保某些客户端能够正常连接。

sql 复制代码
ALTER USER 'pzh'@'%' IDENTIFIED WITH mysql_native_password;
6.6 刷新授权
sql 复制代码
FLUSH PRIVILEGES;
6.7 重启 MySQL 服务
bash 复制代码
sudo systemctl restart mysqld

7. 设置开机自启动

bash 复制代码
sudo systemctl enable mysqld

扩展知识

创建只读用户

创建一个名为 smallhui 的用户,密码为 PanZonghui@123

sql 复制代码
CREATE USER 'smallhui'@'%' IDENTIFIED BY 'PanZonghui@123';

将用户认证插件改为旧版 mysql_native_password,确保某些客户端能够正常连接。

sql 复制代码
ALTER USER 'smallhui'@'%' IDENTIFIED WITH mysql_native_password;

授予用户 smallhuipzh_blog 数据库的只读权限。

sql 复制代码
GRANT SELECT ON pzh_blog.* TO 'smallhui'@'%';

刷新权限。

sql 复制代码
FLUSH PRIVILEGES;

查看用户权限。

sql 复制代码
SHOW GRANTS FOR 'smallhui'@'%';

常用操作 MySQL 的系统命令

bash 复制代码
# 查看 MySQL 服务的运行状态
sudo systemctl status mysqld
# 启动 MySQL 服务
sudo systemctl start mysqld
# 停止 MySQL 服务
sudo systemctl stop mysqld
# 重启 MySQL 服务
sudo systemctl restart mysqld

# 检查 MySQL 服务是否设置为开机自动启动
sudo systemctl is-enabled mysqld
# 设置 MySQL 服务为开机自启动
sudo systemctl enable mysqld
# 禁止 MySQL 服务为开机自启动
sudo systemctl disable mysqld
# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 验证是否开机自启动
sudo reboot # 重启系统
sudo systemctl status mysqld # 查看状态

常用 MySQL 命令

sql 复制代码
-- 查询 MySQL 用户列表
SELECT User, Host FROM mysql.user;

-- 查看用户权限
-- 示例:查看用户 'smallhui'@'%' 的权限
SHOW GRANTS FOR 'smallhui'@'%';
-- 示例:查看用户 'root'@'localhost' 的权限
-- SHOW GRANTS FOR 'root'@'localhost';

-- 查看 MySQL 版本
SELECT VERSION();

-- 查看 MySQL 的端口号
SHOW GLOBAL VARIABLES LIKE 'port';

如何卸载 MySQL

bash 复制代码
# 检查是否已安装 MySQL
rpm -qa | grep -i mysql

# 停止 MySQL 服务
sudo systemctl stop mysqld

# 禁用 MySQL 开机自启
sudo systemctl disable mysqld

# 检查已安装的 MySQL 相关包
rpm -qa | grep -i mysql

# 卸载所有 MySQL 相关包
sudo yum remove -y $(rpm -qa | grep -i mysql)

# 再次检查是否已经移除干净
rpm -qa | grep -i mysql

# 删除 MySQL 数据目录
rm -rf /var/lib/mysql

# 删除 MySQL 配置文件
rm -f /etc/my.cnf
rm -rf /etc/my.cnf.d/

# 删除 MySQL 相关的系统服务配置
sudo rm -f /usr/lib/systemd/system/mysqld.service

# 重新加载 systemd 配置
sudo systemctl daemon-reload
相关推荐
canonical_entropy5 分钟前
可逆计算:一场软件构造的世界观革命
后端·aigc·ai编程
半夏陌离11 分钟前
SQL 拓展指南:不同数据库差异对比(MySQL/Oracle/SQL Server 基础区别)
大数据·数据库·sql·mysql·oracle·数据库架构
重庆穿山甲18 分钟前
从0到1:用 Akka 持久化 Actor + Outbox + RocketMQ 做到“订单-库存最终一致”
后端
敬业小码哥1 小时前
记一次:mysql的json及json数组使用组合使用
数据库·mysql·json
我不只是切图仔2 小时前
我只是想给网站加个注册验证码,咋就那么难!
前端·后端
专注VB编程开发20年2 小时前
CSS 的命名方式像是 PowerShell 的动词-名词结构,缺乏面向对象的层级关系
开发语言·后端·rust
野犬寒鸦2 小时前
力扣hot100:相交链表与反转链表详细思路讲解(160,206)
java·数据结构·后端·算法·leetcode
练小杰2 小时前
【Mysql-installer-community-8.0.26.0】Mysql 社区版(8.0.26.0) 在Window 系统的默认安装配置
数据库·sql·mysql·adb·配置文件·mysql安装·关系型数据库
绿箭柠檬茶2 小时前
Ubuntu 使用 Samba 共享文件夹
linux·运维·ubuntu