文章目录
- 0. 前言
- 1. 查看 Linux 的发行版本
- 2. 在 Ubuntu 中安装MySQL 8.x
- 2.1 更新包索引
- 2.1.1 更改 Ubuntu 的镜像源
- 2.1.2 更新软件包、升级软件包(耗时可能较长)
- 2.1.3 可能遇到的问题
- 2.2 安装MySQL
- 2.3 安全配置
- 2.3.1 密码安全级别
- 2.3.2 删除匿名用户
- 2.3.3 禁止远程 root 用户登录
- 2.3.4 删除测试数据库以及对测试数据库的访问权限
- 2.3.5 立即重新加载权限表
- 2.4 创建新用户、修改用户的权限、修改用户密码
- 2.4.1 查看 MySQL 当前有哪些用户
- 2.4.2 创建一个新用户,用于远程访问
- 2.4.3 修改用户的访问权限
- 2.4.4 修改用户的密码
- 2.5 查看 MySQL 的运行状态
- 2.6 设置 MySQL 开机自启
- 2.7 开放防火墙的 3306 端口
- 2.8 修改MySQL远程连接配置
- 2.9 创建数据库
- 2.10 为用户赋予权限
- 2.11 测试连接
- 3. 在 CentOS 中安装MySQL 8.x
- 3.1 配置 yum 仓库
- 3.2 使用 yum 安装MySQL 8.x
- 3.3 启动 MySQL 并设置 MySQL 开机自启
- 3.4 检查 MySQL 的运行状态
- 3.5 配置
- 3.5.1 获得 root 用户的初始密码
- 3.5.2 登录
- 3.5.3 修改 root 用户的密码
- 3.6 创建一个新用户,用于远程连接
- 3.7 创建数据库
- 3.8 为用户赋予权限
- 3.9 开放防火墙的 3306 端口
- 3.10 测试连接
- 3.11 安全配置(可跳过)
0. 前言
在 Linux 系统中,可以通过 宝塔 等工具一键安装 MySQL,但是用 宝塔 安装 MySQL 8.x,对 Linux 的内存大小有限制(内存要大于等4G),解除这个限制比较麻烦,不建议使用
通用的安装方法就是通过指令安装,接下来为大家演示如何使用指令安装MySQL 8.x
本次演示使用的Linux版本为
- Ubuntu 22.04 LTS
- CentOS 7
Ubuntu 22.04 的下载地址:Ubuntu 22.04
CentOS 7 的下载地址:CentOS 7
1. 查看 Linux 的发行版本
输入以下指令查看 Linux 的发行版本
cat /etc/os-release
Ubuntu
CentOS
2. 在 Ubuntu 中安装MySQL 8.x
2.1 更新包索引
2.1.1 更改 Ubuntu 的镜像源
更新包索引前,先运行以下指令查看 Ubuntu 的镜像源
sudo cat /etc/apt/sources.list
- 如果显示 Ubuntu 的镜像源为官方源(http://cn.archive.ubuntu.com/ubuntu/),先运行以下指令更改 Ubuntu 的镜像源
- 如果不是官方源,可以跳过更改 Ubuntu 镜像源这一步
sudo vi /etc/apt/sources.list
先删除文件的所有内容(快捷键:dG
),
再将以下内容(阿里云的 Ubuntu 镜像源)填充到文件中,最后保存文件
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
重启 NetworkManager 服务(一定要执行这条指令!!!)
sudo systemctl restart NetworkManager
温馨提醒:如果在执行与 apt 有关的指令时遇到以下问题,请执行这条指令(
sudo systemctl restart NetworkManager
)
2.1.2 更新软件包、升级软件包(耗时可能较长)
更新 apt 包管理器中的软件包列表
sudo apt update
升级系统中可升级的软件包
sudo apt upgrade -y
2.1.3 可能遇到的问题
- 如果在更新包索引时遇到以下警告,是因为 Ubuntu 中安装了 docker ,但没有配置 docker 的 apt 镜像源
- 没有配置镜像源,就会从 docker 官网下载 与 docker 相关的包 ,但 docker 官网的站点部署在国外,访问速度很慢,很容易连接超时,一旦连接超时就会给出警告
这些警告不影响我们安装 MySQL 8.x,可以忽略
运行sudo apt update
指令时可能会遇到的警告信息
运行sudo apt upgrade -y
指令时可能会遇到的警告信息
当然,如果你忍受不了这些警告信息,可以运行以下指令后再次执行更新包索引
的指令
# 安装 curl 工具
sudo apt install curl
# 获取阿里云的 docker GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 阿里云的 docker apt 镜像源
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
2.2 安装MySQL
Ubuntu 18
及以上的默认软件仓库已经包含MySQL 8.0,可以直接安装,无需添加额外的仓库
sudo apt install mysql-server -y
安装成功后运行以下指令查看 MySQL 的版本
mysql --version
2.3 安全配置
安装 MySQL 后,一个重要的步骤是执行安全配置脚本,提高 MySQL 服务器的安全性
sudo mysql_secure_installation
输入 y 开始进行安全配置
2.3.1 密码安全级别
密码安全级别有三个:
- LOW(弱密码):长度至少要有8个字符
- MEDIUM(中等强度密码):长度至少要有8个字符,需要包含数字、大小写字母以及特殊符号
- STRONG(强密码):长度至少要有8个字符,包含数字、大小写字母、特殊符号,而且不能是容易被猜到的常见词汇
输入 0 代表使用弱密码,输入 1 代表使用中等强度密码,输入 2 代表使用强密码
2.3.2 删除匿名用户
输入 y 即可
2.3.3 禁止远程 root 用户登录
输入 y 即可
2.3.4 删除测试数据库以及对测试数据库的访问权限
输入 y 即可
2.3.5 立即重新加载权限表
输入 y 即可
显示All done!
就代表配置成功了
2.4 创建新用户、修改用户的权限、修改用户密码
先在终端中打开MySQL
sudo mysql
2.4.1 查看 MySQL 当前有哪些用户
SELECT user,host FROM mysql.user;
所有用户默认都是 localhost 访问权限,只能本地访问,不能远程访问
2.4.2 创建一个新用户,用于远程访问
不建议使用 root 用户进行远程访问,可以创建一个新用户进行远程访问
CREATE USER 'wuyanzu'@'%' IDENTIFIED BY '!UpuSZAxG#1&2^cG';
2.4.3 修改用户的访问权限
先切换到 mysql 数据库
use mysql
使用以下指令更改用户的访问权限
- localhost代表只能在本地访问
%
是一个通配符,代表root
用户可以从任何主机连接到数据库服务器
update user set host = 'localhost' where user = 'root';
update user set host = '%' where user = 'root';
重新加载权限表
flush privileges;
2.4.4 修改用户的密码
以 root 用户为例
ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '_1Ejz8T#jiaarKz^';
如果遇到以下错误,是因为你的密码太简单了,达不到你选择的密码安全级别的标准
2.5 查看 MySQL 的运行状态
先退出 mysql
exit;
查看 MySQL 的运行状态
systemctl status mysql
2.6 设置 MySQL 开机自启
sudo systemctl enable mysql
2.7 开放防火墙的 3306 端口
- 如果你使用的是云服务器,在安全组中放行 3306 端口
- 如果你安装了宝塔,除了在安全组中放行 3306 端口,还要在宝塔中放行 3306 端口
完成以上两个操作后,输入以下指令开放 3306 端口
sudo ufw allow 3306
sudo ufw reload
2.8 修改MySQL远程连接配置
先安装 vim 编辑器
sudo apt install vim -y
如果要远程访问MySQL,需要修改以下配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
将 127.0.0.1
改为0.0.0.0
0.0.0.0
重启 MySQL 服务
sudo systemctl restart mysql
2.9 创建数据库
先以 root 用户登录到 MySQL
mysql -u root -p
CREATE DATABASE IF NOT EXISTS blog;
查看所有数据库
SHOW DATABASES;
2.10 为用户赋予权限
GRANT ALL PRIVILEGES ON blog.* TO 'wuyanzu'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- ALL PRIVILEGES表示赋予该用户所有权限(insert、delete、select、update)
- blog代表名为 blog 的数据库
- blog.*代表 blog 数据库中的所有表
授予 wuyanzu 用户所有数据库的权限(不推荐使用)
GRANT ALL PRIVILEGES ON *.* TO 'wuyanzu'@'%' WITH GRANT OPTION;
# 刷新权限列表
FLUSH PRIVILEGES;
2.11 测试连接
通过 Navicat 等工具连接MySQL
3. 在 CentOS 中安装MySQL 8.x
注意:安装操作需要 root 权限
3.1 配置 yum 仓库
# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
# 安装 Mysql8.x 版本的 yum 库
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
3.2 使用 yum 安装MySQL 8.x
yum -y install mysql-community-server
安装成功后运行以下指令查看 MySQL 的版本
mysql --version
3.3 启动 MySQL 并设置 MySQL 开机自启
# 启动 MySQL
systemctl start mysqld
# 设置 MySQL 开机自启
systemctl enable mysqld
3.4 检查 MySQL 的运行状态
设置时区为上海时区(可忽略)
timedatectl set-timezone Asia/Shanghai
systemctl status mysqld
3.5 配置
3.5.1 获得 root 用户的初始密码
通过grep
命令,在/var/log/mysqld.log
文件中过滤temporary password
关键字,得到初始密码
grep 'temporary password' /var/log/mysqld.log
3.5.2 登录
使用初始密码登录 root 用户
mysql -u root -p
登录成功后的界面
3.5.3 修改 root 用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '&EAx3s%WJzgbT7GW';
密码需要符合以下规则:
- 大于8位
- 有大写字母,有特殊符号
请妥善保管好密码
3.6 创建一个新用户,用于远程连接
不建议使用 root 用户进行远程访问,可以创建一个新用户进行远程访问
create user 'wuyanzu'@'%' IDENTIFIED WITH mysql_native_password BY 'v&!w7Eik6cmt#Uff';
3.7 创建数据库
CREATE DATABASE IF NOT EXISTS blog;
3.8 为用户赋予权限
GRANT ALL PRIVILEGES ON blog.* TO 'wuyanzu'@'%' WITH GRANT OPTION;
- ALL PRIVILEGES表示赋予该用户所有权限(insert、delete、select、update)
- blog代表名为 blog 的数据库
- blog.*代表 blog 数据库中的所有表
# 刷新权限列表
FLUSH PRIVILEGES;
授予 wuyanzu 用户所有数据库的权限(不推荐使用)
GRANT ALL PRIVILEGES ON *.* TO 'wuyanzu'@'%' WITH GRANT OPTION;
# 刷新权限列表
FLUSH PRIVILEGES;
3.9 开放防火墙的 3306 端口
- 如果你使用的是云服务器,在安全组中放行 3306 端口
- 如果你安装了宝塔,除了在安全组中放行 3306 端口,还要在宝塔中放行 3306 端口
完成以上两个操作后,输入以下指令开放 3306 端口
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
查看当前防火墙开放了哪些端口
sudo firewall-cmd --zone=public --list-ports
3.10 测试连接
通过 Navicat 等工具连接MySQL
3.11 安全配置(可跳过)
参考本文的 2.3 安全配置 章节
进行安全配置前需要输入 root 用户的密码
输入 root 用户的密码后会询问我们是否要修改 root 用户的密码,我们输入 n 即可