数据库|Linux 下 MySQL 安装教程
Linux 下 MySQL 安装教程
- 下载 MySQL
- 卸载 MySQL
- 安装 MySQL
- 设置 MySQL 开机自启动
- 远程访问 MySQL
-
- MySQL Workbench 远程访问 MySQL
- Navicat Premium 远程访问 MySQL
笔者的运行环境:下载 MySQL
CentOS Stream 8 x86_64
MySQL 8.0.26
- 进行这个教程之前,必须要先安装好一个 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
- 一般来说,安装一个软件有 3 种方法:离线安装、在线安装、免安装。通常,离线安装是最好的方法,同时也通常是笔者的首选,本文亦使用的是离线安装的方法。
对于 Linux,这三种方法各有千秋。笔者分别试验了这 3 种方法,但只给出离线安装的方法。因为对于安装来说,提供多种选择实属多余,还会增加读者选择上的负担。
对于 Linux,离线安装的好处与坏处分别为:
- 好处:除了第一次下载需要下载完整的安装包之外,之后每次安装都可无需联网。这样不仅节约了流量,而且无需担心未来安装包会失效。相对免安装,安装操作会在操作系统中注册该软件的信息,会安装时会自动执行某些操作,通常可以避免一些手动配置。
- 坏处:离线安装无法自动安装依赖。如果所要安装的安装包依赖其它安装包,安装者需要自己手动下载完所有的依赖安装包。
- 由于 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
。记住这一点,下面将会用上。
- 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
来进行进一步的验证。
- 打开 MySQL 官网,找到 Community 版的下载。选择 Community 是因为该版本免费而且是一般使用的版本。具体的流程如下面的图片所示。
MySQL 的官网是:https://www.mysql.com/
MySQL 下载处的最终网址:https://dev.mysql.com/downloads/mysql/
文章图片
文章图片
- 注意,这里选择
MySQL Community Server
。而MySQL Community Server
上面的三个选项(MySQL Yum Repository
、MySQL APT Repository
、MySQL SUSE Repository
)则为 MySQL 在线安装需要下载的安装包。
文章图片
- 此处,需要根据自己的操作系统来作选择。笔者的操作系统为
CentOS Stream 8 x86_64
,因此选择Red Hat Enterprise Linux / Oracle Linux
。
文章图片
- 此处,同样也需要根据自己的操作系统来作选择。前面已作说明,此处笔者应该选择带
x86
、64
、Linux 8
字样的选项Red Hat Enterprise Linux 8 / Oracle Linux 8 (x86, 64-bit)
。
文章图片
- 此处应该选择
RPM Bundle
(RPM 打包版)字样的选项来下载。可以看出,需要下载的文件为 tar 文件。另外,RPM Bundle
下还有其它选项,这其实已经被包含在RPM Bundle
中了。应该说,MySQL 的安装包有多个组成部分,RPM Bundle
下面的正是这各个部分,这是为了供某些有特殊需求的人单独下载。
文章图片
一般来说,MySQL 是用于服务器中的,因此需要的是MySQL Server
(mysql-community-server
)。那么,为什么要下载RPM Bundle
呢?原因是 MySQL 的各个组成安装包之间有复杂的依赖关系,因此需要整个一起下载,而不能只下载MySQL Server
。
- 下载完成之后,先不要急着安装。由于某些原因,在本次安装 MySQL 之前,可能电脑中已经有了安装过 MySQL 的痕迹,这可能会给下面 MySQL 的安装带来各种问题(如密码不能初始化、MySQL 执行失败等),因此首先需要先彻底清除电脑中与 MySQL 有关的任何文件。
- 首先要检查电脑里是否已经安装了 MySQL。输入以下命令来查看电脑中与 MySQL 有关的安装信息。
sudo yum list installed mysql*
如果命令的输出什么也没有,那就无需卸载。如果有,则要输入以下命令来卸载:
sudo yum erase mysql*
- 卸载通常不是万能的,还需要手动删除与 MySQL 有关的文件。输入以下命令来查找这种文件:
sudo find / -name 'mysql*'
输入以下命令来删除目录/var/
、/usr/
、/etc/
下的这些文件。
sudo find /var /usr /etc -name "mysql*" -exec rm -r {} \
删除完成之后,再使用上面的查找命令,看看还能不能找到这些文件。
- 彻底清除 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
- 解压之后可以得到一系列的安装包,这在意料之中。前面已经介绍过,核心的安装包是
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
(注意:虽然这是离线安装包,但安装时并非完全不需要网络。在初次安装时,操作系统可能会首先对软件仓库进行更新,此过程需要联网。)
下载过程示例:
文章图片
文章图片
文章图片
【踩坑提醒】
??不要自己手动去安装各个依赖包。依赖包数目众多,依赖关系复杂,手动安装将会遭遇各种问题。
- 验证 MySQL 是否安装成功。验证的方法非常多,这里只举几个例子。
如果输入这条命令后出现了刚刚安装的 MySQL 的版本,说明安装成功。
mysql --version
[root@localhost ~]# mysql --version mysqlVer 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
如果输入这条命令,出现了很长的说明文字,说明安装成功。
man mysql
- 安装完成之后,需要设置数据库密码。输入以下命令重启 MySQL,在初次重启的时候,MySQL 会自动生成一个随机密码。
systemctl restart mysqld
- 生成的密码在文件
/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 的密码!
- 输入命令 mysql -u -root -p
初始密码
来登录。其中,初始密码
要换成上面在文件/var/log/mysqld.log
中查看的密码,且mysql -u -root -p
与初始密码
之间没有空格。如笔者应该输入的命令为:
mysql -u -root -pwqhR5:*BHyrf
- 首次登录后,需要修改密码才能使用 MySQL 的其它命令。
不过这里有一个问题,MySQL 默认要求设置的密码对安全系数要求较高,如长度最小为 8 位,含大小写、数字、特殊符号。对于个人作实验而用的 MySQL,这会很不方便。可以修改这个密码最低要求的设定,不过必须要先设置一个合格的密码才行。
修改密码的命令为:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
。其中,新密码
要被换成自己设置的密码,且新密码
要位于单引号之中。
- 在设置完之后,输入以下命令查看 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)
- 输入以下命令来更改 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)
- 可以看出,现在的密码强度已经发生了变更,现在就可以使用上面修改密码的命令来设置一个简单的密码了。
- 安装完成之后,还希望 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 可以开机启动。
- 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
- 一个偷懒的方法就是,永久地关闭防火墙。关闭的方法如下:
- 现在可以尝试远程访问 MySQL。笔者以 Windows 下的
MySQL Workbench 8.0
、Navicat 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 8.0
远程访问 MySQL。这需要提前安装MySQL Workbench 8.0
。关于这方面的内容,可见笔者的另一篇博客:
MySQL Community 安装教程:
https://blog.csdn.net/wangpaiblog/article/details/112000033
- 打开
MySQL Workbench 8.0
后,按下图所示进行操作即可。
文章图片
- 按下图填写信息,先测试连接是否可用。如果连接过程中,
MySQL Workbench 8.0
出现了无响应的状态,这是正常现象,耐心等待即可。
文章图片
- 如果连接可用,就可以建立连接了。
文章图片
- 使用
Navicat Premium 15
远程访问 MySQL。这需要提前安装Navicat Premium 15
。不过很遗憾,该软件不是免费的,但是不是没有免费安装的方法。笔者已经提前安装好了该软件。
(笔者很愿意就在这里讲解免费安装的方法,但由于版权的问题,读者需要在网上自行了解。如果实在找不到,也可在下方留言联系。笔者在看到这些消息之后将免费提供相关资源,希望各位了解后不要自由传播。)
- 打开
Navicat Premium 15
后,按下图所示进行操作即可。
文章图片
- 按下图填写信息,先测试连接是否可用。如果连接过程中,
Navicat Premium 15
出现了无响应的状态,这是正常现象,耐心等待即可。
文章图片
- 如果连接可用,就可以建立连接了。
文章图片
- 【数据库|Linux 下 MySQL 安装教程】经过以上漫长的操作,现在就可以轻松地远程访问 MySQL 了。欢呼吧,少年!
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 开学第一天(下)
- 【故障公告】周五下午的一次突发故障
- 生活随笔|好天气下的意外之喜
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- 汇讲-勇于突破
- Android中的AES加密-下
- 说的真好
- 放下心中的偶像包袱吧
- Linux下面如何查看tomcat已经使用多少线程