• 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仓库
    # 更新密钥
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20240226172554403

    • 使用yum安装MySQL
    # yum安装Mysql
    yum -y install mysql-community-server
    
    • 1
    • 2

    image-20240226172749209

    • 安装完成后,启动MySQL并配置开机自启动
    systemctl start mysqld		# 启动
    systemctl enable mysqld		# 开机自启
    
    • 1
    • 2

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

    • 检查MySQL的运行状态
    systemctl status mysqld
    
    • 1

    image-20240226173321502

    配置

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

    • 获取MySQL的初始密码
    # 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
    grep 'temporary password' /var/log/mysqld.log
    
    • 1
    • 2

    image-20240226182858344

    • 登录MySQL
    # 执行
    mysql -uroot -p
    # 解释
    # -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root
    # -p,表示使用密码登陆
    
    # 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20240226183046500

    • 修改root用户密码
    # 在MySQL控制台内执行
    ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
    
    • 1
    • 2

    image-20240226183252166

    • 配置root的简单密码

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

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

    # 如果你想设置简单密码,需要降低Mysql的密码安全级别
    set global validate_password_policy=LOW; # 密码安全级别低
    set global validate_password_length=4;	 # 密码长度最低4位即可
    
    # 然后就可以用简单密码了(在学习中使用简单密码,为了方便,生产中不要这样)
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    image-20240226183808937

    • 配置root远程登录

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

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

    # 授权root远程登录
    grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;  
    # IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
    # 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同
    
    # 刷新权限,生效
    flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20240226184254498

    • 退出MySQL控制台页面
    # 退出命令
    exit
    
    # 或者通过快捷键退出:ctrl + d
    
    • 1
    • 2
    • 3
    • 4
    • 检查端口

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

    netstat -anp | grep 3306
    
    • 1

    image-20240226184632374

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

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

    • 开启防火墙
    systemctl start firewalld
    
    • 1
    • 显示防火墙状态
    systemctl status firewalld
    
    • 1

    image-20240226194448875

    • 打开防火墙的3306端口(--permanent永久生效)
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    • 1

    image-20240226194617059

    • 重启防火墙
    service firewalld restart
    
    • 1

    image-20240226194747713

    • 使用Navicat连接centOS中的MySQL5.7

    image-20240226193756192

    MySQL8.0版本在CentOS系统安装

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

    安装

    • 配置yum仓库(这里的2023要紧跟实时)
    # 更新密钥
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20240226200846746

    • 使用yum安装MySQL
    # yum安装Mysql
    yum -y install mysql-community-server
    
    • 1
    • 2

    image-20240226201253248

    • 安装完成后,启动MySQL并配置开机自启动
    systemctl start mysqld		# 启动
    systemctl enable mysqld		# 开机自启
    
    • 1
    • 2

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

    • 查看MySQL的运行状态
    systemctl status mysqld
    
    • 1

    image-20240226201557935

    配置

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

    • 获取MySQL的初始密码
    # 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
    grep 'temporary password' /var/log/mysqld.log
    
    • 1
    • 2
    • 登录MySQL数据库系统
    # 执行
    mysql -uroot -p
    # 解释
    # -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root
    # -p,表示使用密码登陆
    
    # 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 修改root密码
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
    
    • 1
    • 配置root的简单密码

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

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

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

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

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

    # 第一次设置root远程登录,并配置远程密码使用如下SQL命令
    create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码!';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
    
    # 后续修改密码使用如下SQL命令
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 退出MySQL控制台页面
    # 退出命令
    exit
    
    # 或者通过快捷键退出:ctrl + d
    
    • 1
    • 2
    • 3
    • 4
    • 检查端口

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

    netstat -anp | grep 3306
    
    • 1

    image-20240226202459717

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

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

    • 开启防火墙
    systemctl start firewalld
    
    • 1
    • 显示防火墙状态
    systemctl status firewalld
    
    • 1
    • 打开防火墙的3306端口(--permanent永久生效)
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    • 1
    • 重启防火墙
    service firewalld restart
    
    • 1

    image-20240226202857815

    • 使用Navicat连接centOS中的MySQL8.0

    image-20240226203059080

    • 查看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> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

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

    使用Xshell连接Ubuntu系统

    Ubuntu系统的配置

    • 提升root权限
    sudo su -
    #输入密码
    
    • 1
    • 2
    • 安装net-tools
    sudo apt install net-tools
    
    • 1
    • 查看IP地址
    ifconfig
    
    • 1

    image-20240227090507102

    • 查看22号端口
    netstat -ntlp|grep 22
    
    • 1
    • 安装spenssh-server
    apt-get install openssh-server
    
    • 1

    image-20240227091220592

    • 启动ufw防火墙
    ufw enable
    
    • 1

    image-20240227091252192

    • 允许通过TCP协议在22端口上的传入连接
    ufw allow 22/tcp
    
    • 1

    image-20240227091318878

    使用Xshell连接Ubuntu系统

    • 填写IP

    image-20240227091527986

    • 填写用户密码

    image-20240227091734501

    • 在Xshell上登录成功

    image-20240227092037474

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

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

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

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

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

      课程中选择这种方式操作

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

    安装

    • 下载apt仓库文件
    # 下载apt仓库的安装包,Ubuntu的安装包是.deb文件
    wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
    
    • 1
    • 2

    image-20240227092236659

    • 配置apt仓库
    # 使用dpkg命令安装仓库
    dpkg -i mysql-apt-config_0.8.12-1_all.deb
    
    • 1
    • 2

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

    image-20240227092708227

    弹出框中选择:MySQL Server & Cluster

    image-20240227092809092

    弹出框中选择:mysql-5.7

    image-20240227092856842

    最后选择ok

    image-20240227092931537

    • 更新apt仓库的信息
    # 首先导入仓库的密钥信息
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
    # 更新仓库信息
    apt update
    
    • 1
    • 2
    • 3
    • 4

    image-20240227093156740

    • 检查是否成功配置MySQL5.7的仓库
    apt-cache policy mysql-server
    
    • 1

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

    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.
    
    • 1
    • 2
    • 3
    • 4

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

    #加入公钥
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C
    #更新apt
    apt update
    #查看是否配置MySQL5.7仓库
    apt-cache policy mysql-server
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    image-20240227102657484

    • 安装MySQL5.7
    # 使用apt安装mysql客户端和mysql服务端
    apt install -f -y mysql-client=5.7* mysql-community-server=5.7*
    
    • 1
    • 2

    加载安装

    image-20240227102739790

    进入安装界面

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

    image-20240227102939889

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

    image-20240227103056935

    • 启动MySQL5.7
    /etc/init.d/mysql start			# 启动
    /etc/init.d/mysql stop			# 停止
    /etc/init.d/mysql status		# 查看状态
    
    • 1
    • 2
    • 3

    image-20240227103257998

    • 对MySQL5.7进行初始化
    # 执行如下命令,此命令是MySQL安装后自带的配置程序
    mysql_secure_installation
    # 可以通过which命令查看到这个自带程序所在的位置
    root@DESKTOP-Q89USRE:~# which mysql_secure_installation
    /usr/bin/mysql_secure_installation
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 输入密码

      image-20240227124358897

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

      image-20240227124432497

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

      image-20240227124526118

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

      image-20240227124621349

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

      image-20240227124708444

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

      image-20240227124747660

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

      image-20240227124933247

    8. 登录MySQL5.7

      mysql -u root -p
      
      • 1

      image-20240227125057737

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

    使用Navicat连接Ubuntu中的MySQL5.7

    • 配置MySQL的文件,需要用到vim操作,先安装vim命令
    apt install vim
    
    • 1

    image-20240227133654441

    • 编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件
    vim /etc/mysql/mysql.conf.d/mysqld.cnf
    
    • 1

    注释掉 bind-address = 127.0.0.1

     # bind-address  = 127.0.0.1
    
    • 1

    添加3306端口

    port = 3306
    
    • 1

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

    • 重启MySQL5.7
    #停用MySQL
    service mysql stop
    #启动MySQL
    service mysql start
    #设置MySQL开机自启动
    systemctl enable mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 进入MySQL配置远程登录密码
    # 授权root远程登录
    grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;  
    # IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
    # 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同
    
    # 刷新权限,生效
    flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 配置防火墙,开放3306防火墙端口
    #安装防火墙软件
    apt install firewalld
    
    • 1
    • 2

    image-20240227140456214

    • 开放3306端口
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    • 1
    • 重启防火墙
    firewall-cmd --reload
    
    • 1
    • 查询防火墙是否允许通过3306端口
    firewall-cmd --query-port=3306/tcp
    
    • 1

    image-20240227142036542

    • 使用Navicat连接Ubuntu中的MySQL5.7

    image-20240227142347126

    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版本,需要卸载仓库信息哦
    # 卸载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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 更新apt仓库信息
    apt update
    
    • 1
    • 安装MySQL
    apt install -y mysql-server
    
    • 1
    • 启动MySQL
    /etc/init.d/mysql start			# 启动
    /etc/init.d/mysql stop			# 停止
    /etc/init.d/mysql status		# 查看状态
    
    • 1
    • 2
    • 3
    • 登录MySQL8.0,设置密码
    # 直接执行:mysql
    mysql
    
    • 1
    • 2
    • 设置密码
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    
    • 1
    • 退出MySQL控制台
    exit
    
    • 1
    • 初始化MySQL8.0
    # 执行如下命令,此命令是MySQL安装后自带的配置程序
    mysql_secure_installation
    # 可以通过which命令查看到这个自带程序所在的位置
    root@DESKTOP-Q89USRE:~# which mysql_secure_installation
    /usr/bin/mysql_secure_installation
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 输入密码

    image-20240227144304223

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

    image-20240227144357318

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

    image-20240227144429413

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

    image-20240227144525722

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

    image-20240227144601972

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

    image-20240227144638707

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

    image-20240227144806619

    • 重新登陆MySQL(用更改后的密码)
    mysql -u root -p
    
    • 1

    image-20240227144934181

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

    使用Navicat连接Ubuntu中的MySQL8.0

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

    注释掉 bind-address = 127.0.0.1

     # bind-address  = 127.0.0.1
    
    • 1

    添加3306端口

    port = 3306
    
    • 1

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

    • 重启MySQL5.7
    #停用MySQL
    service mysql stop
    #启动MySQL
    service mysql start
    #设置MySQL开机自启动
    systemctl enable mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 进入MySQL配置远程登录密码

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

    CREATE USER 'root'@'%';
    ALTER USER 'root'@'%' IDENTIFIED BY '654321';
    #授予该用户所有数据库的所有权限,并允许该用户授予其他用户权限
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    #刷新权限
    FLUSH PRIVILEGES;
    #退出
    exit;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20240227150742350

    • 配置防火墙,开放3306防火墙端口
    #安装防火墙软件
    apt install firewalld
    
    • 1
    • 2
    • 开放3306端口
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    • 1
    • 重启防火墙
    firewall-cmd --reload
    
    • 1
    • 查询防火墙是否允许通过3306端口
    firewall-cmd --query-port=3306/tcp
    
    • 1
    • 使用Navicat连接Ubuntu中的MySQL8.0

    image-20240227150356882

    注意

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

    mmexport1709018445136

  • 相关阅读:
    【ESP32_8266_WiFi (十一)】通过JSON实现物联网数据通讯
    数据结构手写算法整理(考研)
    cURL作者狂怼某500强公司,开源维护者是否应当“白打工”?
    python爬虫
    使用jmh框架进行benchmark测试
    深入理解线段树 | 京东物流技术团队
    File类中的方法、获取功能的方法合集、判断功能的方法合集、创建、删除功能的方法合集、目录遍历方法合集
    DSP-FIR滤波器设计
    云表|低代码开发崛起:重新定义企业级应用开发
    dart特殊符号语法(一)
  • 原文地址:https://blog.csdn.net/qq_59621600/article/details/136329321