05-Linux部署MySQL

Linux部署MySQL

在今后的使用过程中,需要频繁使用Linux系统,所以在Linux上安装软是必不可少的操作 。

前置要求

  1. 需要学习前四章知识,初识Linux、Linux基础命令、Linux权限管理、Linux高阶技巧这4个章节。
  2. 需要开启多态虚拟机,电脑内存要大于8G,或者可以选择使用阿里云等云服务器。

MySQL的安装部署

MySQL数据库管理系统(后续简称MySQL),是一款知名的数据库系统,其特点是:轻量、简单、功能丰富。

MySQL数据库可谓是软件行业的明星产品,无论是后端开发、大数据、AI、运维、测试等各类岗位,基本上都会和MySQL打交道。

从MySQL开始,进行实战的Linux软件安装部署。

下面将介绍2个版本进行安装:

  • MySQL 5.7版本安装
  • MySQL 8.x版本安装

MySQL5.7版本在CentOS系统安装

注意:安装操作需要root权限

MySQL的安装可以通过前面学习的yum命令进行。

安装

  • 配置yum仓库
bash 复制代码
# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装Mysql yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
  • 使用yum安装MySQL
bash 复制代码
# yum安装Mysql
yum -y install mysql-community-server
  • 安装完成后,启动MySQL并配置开机自启动
bash 复制代码
systemctl start mysqld		# 启动
systemctl enable mysqld		# 开机自启

MySQL安装完成后,会自动配置为名称叫做:mysqld的服务,可以被systemctl所管理

  • 检查MySQL的运行状态
bash 复制代码
systemctl status mysqld

配置

配置管理员用户root的密码 以及配置允许远程登录的权限

  • 获取MySQL的初始密码
mysql 复制代码
# 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
grep 'temporary password' /var/log/mysqld.log
  • 登录MySQL
mysql 复制代码
# 执行
mysql -uroot -p
# 解释
# -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root
# -p,表示使用密码登陆

# 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
  • 修改root用户密码
mysql 复制代码
# 在MySQL控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
  • 配置root的简单密码

我们可以给root设置简单密码,如123456.

请注意,此配置仅仅是用于测试环境或学习环境的MySQL,如果是正式使用,请勿设置简单密码

mysql 复制代码
# 如果你想设置简单密码,需要降低Mysql的密码安全级别
set global validate_password_policy=LOW; # 密码安全级别低
set global validate_password_length=4;	 # 密码长度最低4位即可

# 然后就可以用简单密码了(在学习中使用简单密码,为了方便,生产中不要这样)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
  • 配置root远程登录

默认情况下,root用户是不运行远程登录的,只允许在MySQL所在的Linux服务器登陆MySQL系统

请注意,允许root远程登录会带来安全风险

mysql 复制代码
# 授权root远程登录
grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;  
# IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
# 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同

# 刷新权限,生效
flush privileges;
  • 退出MySQL控制台页面
mysql 复制代码
# 退出命令
exit

# 或者通过快捷键退出:ctrl + d
  • 检查端口

    MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态

bash 复制代码
netstat -anp | grep 3306

至此,MySQL就安装完成并可用了,请妥善保存好MySQL的root密码。

使用Navicat连接centOS7.9中的MySQL5.7

  • 开启防火墙
bash 复制代码
systemctl start firewalld
  • 显示防火墙状态
bash 复制代码
systemctl status firewalld
  • 打开防火墙的3306端口(--permanent永久生效)
bash 复制代码
firewall-cmd --zone=public --add-port=3306/tcp --permanent
  • 重启防火墙
bash 复制代码
service firewalld restart
  • 使用Navicat连接centOS中的MySQL5.7

MySQL8.0版本在CentOS系统安装

注意:安装操作需要root权限

安装

  • 配置yum仓库(这里的2023要紧跟实时)
bash 复制代码
# 更新密钥
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
  • 使用yum安装MySQL
bash 复制代码
# yum安装Mysql
yum -y install mysql-community-server
  • 安装完成后,启动MySQL并配置开机自启动
bash 复制代码
systemctl start mysqld		# 启动
systemctl enable mysqld		# 开机自启

MySQL安装完成后,会自动配置为名称叫做:mysqld的服务,可以被systemctl所管理

  • 查看MySQL的运行状态
bash 复制代码
systemctl status mysqld

配置

主要修改root密码和允许root远程登录

  • 获取MySQL的初始密码
mysql 复制代码
# 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
grep 'temporary password' /var/log/mysqld.log
  • 登录MySQL数据库系统
mysql 复制代码
# 执行
mysql -uroot -p
# 解释
# -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root
# -p,表示使用密码登陆

# 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
  • 修改root密码
bash 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
  • 配置root的简单密码

我们可以给root设置简单密码,如123456.

请注意,此配置仅仅是用于测试环境或学习环境的MySQL,如果是正式使用,请勿设置简单密码

mysql 复制代码
set global validate_password.policy=0;		# 密码安全级别低
set global validate_password.length=4;		# 密码长度最低4位即可
  • 允许root远程登录,并设置远程登录密码

默认情况下,root用户是不运行远程登录的,只允许在MySQL所在的Linux服务器登陆MySQL系统

请注意,允许root远程登录会带来安全风险

mysql 复制代码
# 第一次设置root远程登录,并配置远程密码使用如下SQL命令
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码!';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc

# 后续修改密码使用如下SQL命令
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
  • 退出MySQL控制台页面
mysql 复制代码
# 退出命令
exit

# 或者通过快捷键退出:ctrl + d
  • 检查端口

    MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态

bash 复制代码
netstat -anp | grep 3306

至此,MySQL就安装完成并可用了,请妥善保存好MySQL的root密码。

使用Navicat连接centOS7.9中的MySQL8.0

  • 开启防火墙
bash 复制代码
systemctl start firewalld
  • 显示防火墙状态
bash 复制代码
systemctl status firewalld
  • 打开防火墙的3306端口(--permanent永久生效)
bash 复制代码
firewall-cmd --zone=public --add-port=3306/tcp --permanent
  • 重启防火墙
bash 复制代码
service firewalld restart
  • 使用Navicat连接centOS中的MySQL8.0
  • 查看MySQL版本
mysql 复制代码
mysql> status;
--------------
mysql  Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:		12
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		8.0.36 MySQL Community Server - GPL
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8mb4
Db     characterset:	utf8mb4
Client characterset:	utf8mb4
Conn.  characterset:	utf8mb4
UNIX socket:		/var/lib/mysql/mysql.sock
Binary data as:		Hexadecimal
Uptime:			18 min 0 sec

Threads: 3  Questions: 21  Slow queries: 0  Opens: 179  Flush tables: 3  Open tables: 95  Queries per second avg: 0.019
--------------

mysql> 

可以看到这个MySQL的版本号是8.0.36

使用Xshell连接Ubuntu系统

Ubuntu系统的配置

  • 提升root权限
bash 复制代码
sudo su -
#输入密码
  • 安装net-tools
bash 复制代码
sudo apt install net-tools
  • 查看IP地址
bash 复制代码
ifconfig
  • 查看22号端口
bash 复制代码
netstat -ntlp|grep 22
  • 安装spenssh-server
bash 复制代码
apt-get install openssh-server
  • 启动ufw防火墙
bash 复制代码
ufw enable
  • 允许通过TCP协议在22端口上的传入连接
bash 复制代码
ufw allow 22/tcp

使用Xshell连接Ubuntu系统

  • 填写IP
  • 填写用户密码
  • 在Xshell上登录成功

MySQL5.7版本在Ubuntu(可使用WSL环境)系统安装

课程中配置的WSL环境是最新的Ubuntu22.04版本,这个版本的软件商店内置的MySQL是8.0版本

所以我们需要额外的步骤才可以安装5.7版本的MySQL

安装操作需root权限,你可以:

  1. 通过 sudo su -,切换到root用户

    课程中选择这种方式操作

  2. 或在每一个命令前,加上sudo,用来临时提升权限

安装

  • 下载apt仓库文件
shell 复制代码
# 下载apt仓库的安装包,Ubuntu的安装包是.deb文件
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
  • 配置apt仓库
bash 复制代码
# 使用dpkg命令安装仓库
dpkg -i mysql-apt-config_0.8.12-1_all.deb

弹出框中选择:ubuntu bionic (Ubuntu18.04系统的代号是bionic,选择18.04的版本库用来安装)

弹出框中选择:MySQL Server & Cluster

弹出框中选择:mysql-5.7

最后选择ok

  • 更新apt仓库的信息
shell 复制代码
# 首先导入仓库的密钥信息
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
# 更新仓库信息
apt update
  • 检查是否成功配置MySQL5.7的仓库
bash 复制代码
apt-cache policy mysql-server

发现没有5.7版本的MySQL,并有以下报错

bash 复制代码
W: GPG error: http://repo.mysql.com/apt/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B7B3B788A8D3785C
E: The repository 'http://repo.mysql.com/apt/ubuntu bionic 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.

该报错说明APT无法验证仓库的 GPG 签名,因为它缺少必要的公钥,可以执行以下命令

bash 复制代码
#加入公钥
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C
#更新apt
apt update
#查看是否配置MySQL5.7仓库
apt-cache policy mysql-server
  • 安装MySQL5.7
bash 复制代码
# 使用apt安装mysql客户端和mysql服务端
apt install -f -y mysql-client=5.7* mysql-community-server=5.7*

加载安装

进入安装界面

输入密码,123456,然后选择ok

再次输入密码,然后选择ok

  • 启动MySQL5.7
bash 复制代码
/etc/init.d/mysql start			# 启动
/etc/init.d/mysql stop			# 停止
/etc/init.d/mysql status		# 查看状态
  • 对MySQL5.7进行初始化
bash 复制代码
# 执行如下命令,此命令是MySQL安装后自带的配置程序
mysql_secure_installation
# 可以通过which命令查看到这个自带程序所在的位置
root@DESKTOP-Q89USRE:~# which mysql_secure_installation
/usr/bin/mysql_secure_installation
  1. 输入密码

  2. 是否开启密码验证插件,如果需要增强密码安全性,输入y并回车,不需要直接回车(课程中选择直接回车)

  3. 是否更改root密码,需要输入y回车,不需要直接回车(课程不更改)

  4. 是否移除匿名用户,移除输入y回车,不移除直接回车(课程选择移除)

  5. 是否进制root用户远程登录,禁止输入y回车,不禁止直接回车(课程选择不禁止)

  6. 是否移除自带的测试数据库,移除输入y回车,不移除直接回车(课程选择不移除)

  7. 是否刷新权限,刷新输入y回车,不刷新直接回车(课程选择刷新)

  8. 登录MySQL5.7

    bash 复制代码
    mysql -u root -p

至此,在Ubuntu上安装MySQL5.7版本成功。

使用Navicat连接Ubuntu中的MySQL5.7

  • 配置MySQL的文件,需要用到vim操作,先安装vim命令
bash 复制代码
apt install vim
  • 编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件
bash 复制代码
vim /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉 bind-address = 127.0.0.1

bash 复制代码
 # bind-address  = 127.0.0.1

添加3306端口

bash 复制代码
port = 3306

最后按ESC输入:wq保存并退出

  • 重启MySQL5.7
bash 复制代码
#停用MySQL
service mysql stop
#启动MySQL
service mysql start
#设置MySQL开机自启动
systemctl enable mysql
  • 进入MySQL配置远程登录密码
bash 复制代码
# 授权root远程登录
grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;  
# IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
# 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同

# 刷新权限,生效
flush privileges;
  • 配置防火墙,开放3306防火墙端口
bash 复制代码
#安装防火墙软件
apt install firewalld
  • 开放3306端口
bash 复制代码
firewall-cmd --zone=public --add-port=3306/tcp --permanent
  • 重启防火墙
bash 复制代码
firewall-cmd --reload
  • 查询防火墙是否允许通过3306端口
bash 复制代码
firewall-cmd --query-port=3306/tcp
  • 使用Navicat连接Ubuntu中的MySQL5.7

MySQL8.0版本在Ubuntu(可使用WSL环境)系统安装

课程中配置的WSL环境是最新的Ubuntu22.04版本,这个版本的软件商店内置的MySQL是8.0版本

所以直接可以通过apt安装即可
注意,课程是以WSL获得的Ubuntu操作系统环境。

如果你通过VMware虚拟机的方式获得了Ubuntu操作系统环境,操作步骤不用担心,和课程中使用WSL环境是完全一致的

安装操作需root权限,你可以:

  1. 通过 sudo su -,切换到root用户

    课程中选择这种方式操作

  2. 或在每一个命令前,加上sudo,用来临时提升权限

安装

  • 如果已经安装过MySQL5.7版本,需要卸载仓库信息哦
bash 复制代码
# 卸载MySQL5.7版本
apt remove -y mysql-client=5.7* mysql-community-server=5.7*

# 卸载5.7的仓库信息
dpkg -l | grep mysql | awk '{print $2}' | xargs dpkg -P
  • 更新apt仓库信息
bash 复制代码
apt update
  • 安装MySQL
bash 复制代码
apt install -y mysql-server
  • 启动MySQL
bash 复制代码
/etc/init.d/mysql start			# 启动
/etc/init.d/mysql stop			# 停止
/etc/init.d/mysql status		# 查看状态
  • 登录MySQL8.0,设置密码
bash 复制代码
# 直接执行:mysql
mysql
  • 设置密码
bash 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
  • 退出MySQL控制台
bash 复制代码
exit
  • 初始化MySQL8.0
bash 复制代码
# 执行如下命令,此命令是MySQL安装后自带的配置程序
mysql_secure_installation
# 可以通过which命令查看到这个自带程序所在的位置
root@DESKTOP-Q89USRE:~# which mysql_secure_installation
/usr/bin/mysql_secure_installation
  • 输入密码
  • 是否开启密码验证插件,如果需要增强密码安全性,输入y并回车,不需要直接回车(课程中选择直接回车)
  • 是否更改root密码,需要输入y回车,不需要直接回车(课程不更改)
  • 是否移除匿名用户,移除输入y回车,不移除直接回车(课程选择移除)
  • 是否进制root用户远程登录,禁止输入y回车,不禁止直接回车(课程选择不禁止)
  • 是否移除自带的测试数据库,移除输入y回车,不移除直接回车(课程选择不移除)
  • 是否刷新权限,刷新输入y回车,不刷新直接回车(课程选择刷新)
  • 重新登陆MySQL(用更改后的密码)
bash 复制代码
mysql -u root -p

至此,在Ubuntu上安装MySQL8.0版本成功。

使用Navicat连接Ubuntu中的MySQL8.0

  • 配置MySQL的文件,需要用到vim操作,先安装vim命令
bash 复制代码
apt install vim
  • 编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件
bash 复制代码
vim /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉 bind-address = 127.0.0.1

bash 复制代码
 # bind-address  = 127.0.0.1

添加3306端口

bash 复制代码
port = 3306

最后按ESC输入:wq保存并退出

  • 重启MySQL5.7
bash 复制代码
#停用MySQL
service mysql stop
#启动MySQL
service mysql start
#设置MySQL开机自启动
systemctl enable mysql
  • 进入MySQL配置远程登录密码

在MySQL 5.7.6及以后的版本中,CREATE USERGRANT语句是分开的

mysql 复制代码
CREATE USER 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED BY '654321';
#授予该用户所有数据库的所有权限,并允许该用户授予其他用户权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
#刷新权限
FLUSH PRIVILEGES;
#退出
exit;
  • 配置防火墙,开放3306防火墙端口
bash 复制代码
#安装防火墙软件
apt install firewalld
  • 开放3306端口
bash 复制代码
firewall-cmd --zone=public --add-port=3306/tcp --permanent
  • 重启防火墙
bash 复制代码
firewall-cmd --reload
  • 查询防火墙是否允许通过3306端口
bash 复制代码
firewall-cmd --query-port=3306/tcp
  • 使用Navicat连接Ubuntu中的MySQL8.0

注意

在正式的生产环境中,一定要使用强密码配置MySQL的登录,以及Linux的登录,MySQL远程登录最好是固定一个公网IP,阿里云服务器中专用的安全组策略来设置,同时要定期备份数据库。否则你的数据库会像如下一样,被劫持。

在使用Ubuntu系统安装MySQL时,使用虚拟机创建的Ubuntu与上述WSL环境一样

WSL环境是指Windows自带的Linux系统环境

相关推荐
小白跃升坊1 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey2 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1152 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng2 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.2 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon2 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq3 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan3 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc
skywalk81633 小时前
尝试在openi启智社区的dcu环境安装ollama最新版0.15.2(失败)
linux·运维·服务器·ollama
zhengfei6114 小时前
AutoPentestX – Linux 自动化渗透测试和漏洞报告工具
linux·运维·自动化