数据库|Linux 下 MySQL 安装教程


Linux 下 MySQL 安装教程

  • 下载 MySQL
  • 卸载 MySQL
  • 安装 MySQL
  • 设置 MySQL 开机自启动
  • 远程访问 MySQL
    • MySQL Workbench 远程访问 MySQL
    • Navicat Premium 远程访问 MySQL

笔者的运行环境:
CentOS Stream 8 x86_64
MySQL 8.0.26
下载 MySQL
  1. 进行这个教程之前,必须要先安装好一个 Linux 操作系统。这个 Linux 操作系统可以安装在虚拟机中,也可以安装在真实的电脑中。关于这方面的内容,可见笔者的其它博客:
    VMware Workstation Pro 16 安装教程:
    https://blog.csdn.net/wangpaiblog/article/details/112152218?spm=1001.2014.3001.5502
    Linux 操作系统 CentOS Stream 安装教程:
    https://blog.csdn.net/wangpaiblog/article/details/119792728?spm=1001.2014.3001.5502
    为了方便远程输入命令、将文件加入到 Linux 操作系统中,最好还要在一台 Windows 操作系统上面使用一种终端控制软件,如 Xshell、Xftp 等。关于这方面的内容,可见笔者的另一篇博客:
    如何在 Windows 主机上访问本地局域网中的 Linux 主机:
    https://blog.csdn.net/wangpaiblog/article/details/120052152?spm=1001.2014.3001.5502
  2. 一般来说,安装一个软件有 3 种方法:离线安装、在线安装、免安装。通常,离线安装是最好的方法,同时也通常是笔者的首选,本文亦使用的是离线安装的方法。
    对于 Linux,这三种方法各有千秋。笔者分别试验了这 3 种方法,但只给出离线安装的方法。因为对于安装来说,提供多种选择实属多余,还会增加读者选择上的负担。
    对于 Linux,离线安装的好处与坏处分别为:
    • 好处:除了第一次下载需要下载完整的安装包之外,之后每次安装都可无需联网。这样不仅节约了流量,而且无需担心未来安装包会失效。相对免安装,安装操作会在操作系统中注册该软件的信息,会安装时会自动执行某些操作,通常可以避免一些手动配置。
    • 坏处:离线安装无法自动安装依赖。如果所要安装的安装包依赖其它安装包,安装者需要自己手动下载完所有的依赖安装包。
  3. 由于 Linux 操作系统的种类繁多,因此首先要知道要安装 Linux 操作系统的处理器架构信息。以 CentOS Stream 8 x86_64 为例,输入以下命令:
    cat /proc/version
    [root@localhost ~]# cat /proc/version Linux version 4.18.0-326.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-3) (GCC)) #1 SMP Wed Jul 28 21:21:05 UTC 2021

    可以看出,上述的关键信息为 x86_64。记住这一点,下面将会用上。
  4. Linux 的 PMS 工具主流有两种。
    对于基于 Red Hat 的发行版,其 PMS 工具为 rpm,对应的安装命令为 yum。
    对于基于 Debian 的发行版,其 PMS 工具为 dpkg,对应的安装命令为 aptitude。
    笔者的操作系统 CentOS Stream 8 x86_64 属于 Red Hat,将使用后缀为 rpm 的安装包。如果读者使用的操作系统为 Ubuntu,需要选择后缀为 deb 的安装包。如果读者不知道如何分辨,可以输入以下命令来验证:
    yum
    [root@localhost xshell_win10]# yum [...一长串说明文字...]

    如果输入 yum 之后,出现了一大串的说明文字,说明应该使用后缀为 rpm 的安装包。如果提示 yum 命令不存在,说明应该使用后缀为 deb 的安装包。当然,读者也可以通过输入命令 aptitude 来进行进一步的验证。
  5. 打开 MySQL 官网,找到 Community 版的下载。选择 Community 是因为该版本免费而且是一般使用的版本。具体的流程如下面的图片所示。
    MySQL 的官网是:https://www.mysql.com/
    MySQL 下载处的最终网址:https://dev.mysql.com/downloads/mysql/
    数据库|Linux 下 MySQL 安装教程
    文章图片

    数据库|Linux 下 MySQL 安装教程
    文章图片

  6. 注意,这里选择 MySQL Community Server。而 MySQL Community Server 上面的三个选项(MySQL Yum RepositoryMySQL APT RepositoryMySQL SUSE Repository)则为 MySQL 在线安装需要下载的安装包。
    数据库|Linux 下 MySQL 安装教程
    文章图片

  7. 此处,需要根据自己的操作系统来作选择。笔者的操作系统为 CentOS Stream 8 x86_64,因此选择 Red Hat Enterprise Linux / Oracle Linux
    数据库|Linux 下 MySQL 安装教程
    文章图片

  8. 此处,同样也需要根据自己的操作系统来作选择。前面已作说明,此处笔者应该选择带 x8664Linux 8 字样的选项 Red Hat Enterprise Linux 8 / Oracle Linux 8 (x86, 64-bit)
    数据库|Linux 下 MySQL 安装教程
    文章图片

  9. 此处应该选择 RPM Bundle(RPM 打包版)字样的选项来下载。可以看出,需要下载的文件为 tar 文件。另外,RPM Bundle 下还有其它选项,这其实已经被包含在 RPM Bundle 中了。应该说,MySQL 的安装包有多个组成部分, RPM Bundle 下面的正是这各个部分,这是为了供某些有特殊需求的人单独下载。
    数据库|Linux 下 MySQL 安装教程
    文章图片

    一般来说,MySQL 是用于服务器中的,因此需要的是 MySQL Servermysql-community-server)。那么,为什么要下载 RPM Bundle 呢?原因是 MySQL 的各个组成安装包之间有复杂的依赖关系,因此需要整个一起下载,而不能只下载 MySQL Server
卸载 MySQL
  1. 下载完成之后,先不要急着安装。由于某些原因,在本次安装 MySQL 之前,可能电脑中已经有了安装过 MySQL 的痕迹,这可能会给下面 MySQL 的安装带来各种问题(如密码不能初始化、MySQL 执行失败等),因此首先需要先彻底清除电脑中与 MySQL 有关的任何文件。
  2. 首先要检查电脑里是否已经安装了 MySQL。输入以下命令来查看电脑中与 MySQL 有关的安装信息。
    sudo yum list installed mysql*
    如果命令的输出什么也没有,那就无需卸载。如果有,则要输入以下命令来卸载:
    sudo yum erase mysql*
  3. 卸载通常不是万能的,还需要手动删除与 MySQL 有关的文件。输入以下命令来查找这种文件:
    sudo find / -name 'mysql*'
    输入以下命令来删除目录 /var//usr//etc/ 下的这些文件。
    sudo find /var /usr /etc -name "mysql*" -exec rm -r {} \
    删除完成之后,再使用上面的查找命令,看看还能不能找到这些文件。
安装 MySQL
  1. 彻底清除 MySQL 之后,就可以进行安装了。可以使用 Xshell 将前面下载的 tar 包置入 Linux 操作系统中。对于使用安装包来安装 Java,将安装包放在哪个目录无关紧要。假设已经将安装包置入当前目录,输入以下命令进行解压:
    tar -xvf mysql-8.0.26-1.el8.x86_64.rpm-bundle.tar
    [root@localhost MySQL 安装包]# tar -xvf mysql-8.0.26-1.el8.x86_64.rpm-bundle.tar mysql-community-client-8.0.26-1.el8.x86_64.rpm mysql-community-client-debuginfo-8.0.26-1.el8.x86_64.rpm mysql-community-client-plugins-8.0.26-1.el8.x86_64.rpm mysql-community-client-plugins-debuginfo-8.0.26-1.el8.x86_64.rpm mysql-community-common-8.0.26-1.el8.x86_64.rpm mysql-community-debuginfo-8.0.26-1.el8.x86_64.rpm mysql-community-debugsource-8.0.26-1.el8.x86_64.rpm mysql-community-devel-8.0.26-1.el8.x86_64.rpm mysql-community-libs-8.0.26-1.el8.x86_64.rpm mysql-community-libs-debuginfo-8.0.26-1.el8.x86_64.rpm mysql-community-server-8.0.26-1.el8.x86_64.rpm mysql-community-server-debug-8.0.26-1.el8.x86_64.rpm mysql-community-server-debug-debuginfo-8.0.26-1.el8.x86_64.rpm mysql-community-server-debuginfo-8.0.26-1.el8.x86_64.rpm mysql-community-test-8.0.26-1.el8.x86_64.rpm mysql-community-test-debuginfo-8.0.26-1.el8.x86_64.rpm

  2. 解压之后可以得到一系列的安装包,这在意料之中。前面已经介绍过,核心的安装包是 mysql-community-server。在普通情况下,输入命令 sudo yum localinstall mysql-community-server-8.0.26-1.el8.x86_64.rpm。但在此处却不能这样做,因为 MySQL 的各个组成安装包之间有复杂的依赖关系,而 mysql-community-server 并不是依赖的起点。幸运的是,以下命令可以自动解析本目录下各安装包的依赖关系,并自动按顺序安装:
    sudo yum localinstall *.rpm
    (注意:虽然这是离线安装包,但安装时并非完全不需要网络。在初次安装时,操作系统可能会首先对软件仓库进行更新,此过程需要联网。)
    下载过程示例:
    数据库|Linux 下 MySQL 安装教程
    文章图片

    数据库|Linux 下 MySQL 安装教程
    文章图片

    数据库|Linux 下 MySQL 安装教程
    文章图片

    【踩坑提醒】
    ??不要自己手动去安装各个依赖包。依赖包数目众多,依赖关系复杂,手动安装将会遭遇各种问题。
  3. 验证 MySQL 是否安装成功。验证的方法非常多,这里只举几个例子。
    如果输入这条命令后出现了刚刚安装的 MySQL 的版本,说明安装成功。
    mysql --version
    [root@localhost ~]# mysql --version mysqlVer 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)

    如果输入这条命令,出现了很长的说明文字,说明安装成功。
    man mysql
  4. 安装完成之后,需要设置数据库密码。输入以下命令重启 MySQL,在初次重启的时候,MySQL 会自动生成一个随机密码。
    systemctl restart mysqld
  5. 生成的密码在文件 /var/log/mysqld.log 中,输入以下命令可快速查看:
    grep 'temporary password' /var/log/mysqld.log
    [root@localhost MySQL 安装包]# grep 'temporary password' /var/log/mysqld.log 2021-09-08T11:55:40.637829Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: wqhR5:*BHyrf

    可以看出,上述的密码是 wqhR5:*BHyrf
    【踩坑提醒】
    ??MySQL 关于此文件 /var/log/mysqld.log 的初始密码的生成只会进行一次。要尽快备份此文件直到修改密码之前。不然一旦忘记密码,就只能和前面一样,彻底删除 MySQL,然后再重新安装它。只是简单地卸载 MySQL 并不会重置 MySQL 的密码!
  6. 输入命令 mysql -u -root -p初始密码 来登录。其中,初始密码要换成上面在文件 /var/log/mysqld.log 中查看的密码,且 mysql -u -root -p初始密码 之间没有空格。如笔者应该输入的命令为:
    mysql -u -root -p wqhR5:*BHyrf
  7. 首次登录后,需要修改密码才能使用 MySQL 的其它命令。
    不过这里有一个问题,MySQL 默认要求设置的密码对安全系数要求较高,如长度最小为 8 位,含大小写、数字、特殊符号。对于个人作实验而用的 MySQL,这会很不方便。可以修改这个密码最低要求的设定,不过必须要先设置一个合格的密码才行。
    修改密码的命令为:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; 。其中,新密码 要被换成自己设置的密码,且 新密码 要位于单引号之中。
  8. 在设置完之后,输入以下命令查看 MySQL 关于密码强度的默认设定:
    SHOW VARIABLES LIKE 'validate_password%';
    mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | 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| +--------------------------------------+--------+ 7 rows in set (0.00 sec)

  9. 输入以下命令来更改 MySQL 密码强度的要求:(为了数据库的安全,请谨慎使用这些命令)
    set global validate_password.length=6;
    set global validate_password.mixed_case_count=0;
    set global validate_password.number_count=0;
    set global validate_password.policy=LOW;
    set global validate_password.special_char_count=0;
    mysql> set global validate_password.length=6; Query OK, 0 rows affected (0.00 sec)mysql> set global validate_password.mixed_case_count=0; Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password.number_count=0; Query OK, 0 rows affected (0.00 sec)mysql> set global validate_password.policy=LOW; Query OK, 0 rows affected (0.00 sec)mysql> set global validate_password.special_char_count=0; Query OK, 0 rows affected (0.00 sec)mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name| Value | +--------------------------------------+-------+ | validate_password.check_user_name| ON| | validate_password.dictionary_file|| | validate_password.length| 6| | validate_password.mixed_case_count| 0| | validate_password.number_count| 0| | validate_password.policy| LOW| | validate_password.special_char_count | 0| +--------------------------------------+-------+ 7 rows in set (0.00 sec)

  10. 可以看出,现在的密码强度已经发生了变更,现在就可以使用上面修改密码的命令来设置一个简单的密码了。
设置 MySQL 开机自启动
  1. 安装完成之后,还希望 MySQL 能随电脑开机时自启动。不过,使用安装包来安装 MySQL 后,MySQL 会自动被自动设置成开机自启动。
    可以验证这一点。输入以下命令重启电脑:
    reboot
    电脑重启后,马上输入以下命令查看 MySQL 的运行状态:
    service mysqld status
    [root@localhost ~]# service mysqld status Redirecting to /bin/systemctl status mysqld.service ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since XXX XXXX-XX-XX XX:XX:XX EDT; XXh XXmin ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 1521 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 1836 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 22839) Memory: 535.8M CGroup: /system.slice/mysqld.service └─1836 /usr/sbin/mysqldX月 XX XX:XX:XX localhost.localdomain systemd[1]: Starting MySQL Server... X月 XX XX:XX:XX localhost.localdomain systemd[1]: Started MySQL Server.

    如果出现了类似于上述的信息,说明 MySQL 可以开机启动。
远程访问 MySQL
  1. Linux 通常作为服务器操作系统,一般希望能使用远程使用 MySQL。不过,Linux 上有防火墙,默认会阻止远程对 MySQL 的连接。实际上,它会阻止所有的远程连接。对于笔者的 CentOS Stream 8 x86_64,默认的防火墙为 firewalld,而不是 iptables。(很多人会选择安装 iptables,但偷懒的笔者当时没有选择这样做。)
    • 一个偷懒的方法就是,永久地关闭防火墙。关闭的方法如下:
      systemctl stop firewalld
      systemctl mask firewalld
      firewall-cmd --reload
    • 另一个方法是,在防火墙中永久开放 MySQL 的默认端口 3306。开放的方法如下:
      firewall-cmd --zone=public --add-port=3306/tcp --permanent
      firewall-cmd --reload
      单独开放完端口 3306 之后,可以输入以下命令查看是否生效:
      firewall-cmd --zone=public --query-port=3306/tcp
      [root@localhost temp]# firewall-cmd --zone=public --query-port=3306/tcp yes

      实际上,也可以输入以下命令查看所有开放的端口:
      firewall-cmd --zone=public --list-ports
      [root@localhost temp]# firewall-cmd --zone=public --list-ports 3306/tcp

  2. 现在可以尝试远程访问 MySQL。笔者以 Windows 下的 MySQL Workbench 8.0Navicat Premium 15 为例来远程访问 MySQL。在这之前,需要在 MySQL 中提供这一支持。方法是输入以下命令:
    create user 'root'@'%' identified with mysql_native_password by '密码';
    grant all privileges on *.* to 'root'@'%' with grant option;
    flush privileges;
    其中,密码 要改成自己设置的实际的密码。
MySQL Workbench 远程访问 MySQL
  1. 使用 MySQL Workbench 8.0 远程访问 MySQL。这需要提前安装 MySQL Workbench 8.0。关于这方面的内容,可见笔者的另一篇博客:
    MySQL Community 安装教程:
    https://blog.csdn.net/wangpaiblog/article/details/112000033
  2. 打开 MySQL Workbench 8.0 后,按下图所示进行操作即可。
    数据库|Linux 下 MySQL 安装教程
    文章图片

  3. 按下图填写信息,先测试连接是否可用。如果连接过程中,MySQL Workbench 8.0 出现了无响应的状态,这是正常现象,耐心等待即可。
    数据库|Linux 下 MySQL 安装教程
    文章图片

  4. 如果连接可用,就可以建立连接了。
    数据库|Linux 下 MySQL 安装教程
    文章图片

Navicat Premium 远程访问 MySQL
  1. 使用 Navicat Premium 15 远程访问 MySQL。这需要提前安装 Navicat Premium 15。不过很遗憾,该软件不是免费的,但是不是没有免费安装的方法。笔者已经提前安装好了该软件。
    (笔者很愿意就在这里讲解免费安装的方法,但由于版权的问题,读者需要在网上自行了解。如果实在找不到,也可在下方留言联系。笔者在看到这些消息之后将免费提供相关资源,希望各位了解后不要自由传播。)
  2. 打开 Navicat Premium 15 后,按下图所示进行操作即可。
    数据库|Linux 下 MySQL 安装教程
    文章图片

  3. 按下图填写信息,先测试连接是否可用。如果连接过程中,Navicat Premium 15 出现了无响应的状态,这是正常现象,耐心等待即可。
    数据库|Linux 下 MySQL 安装教程
    文章图片

  4. 如果连接可用,就可以建立连接了。
    数据库|Linux 下 MySQL 安装教程
    文章图片

  5. 【数据库|Linux 下 MySQL 安装教程】经过以上漫长的操作,现在就可以轻松地远程访问 MySQL 了。欢呼吧,少年!

    推荐阅读