关于MySQL的这四种安装方式你一定要知道

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 关于MySQL的这四种安装方式你一定要知道

写在前面

       本次是在Centos7.9中通过rpm、yum、二进制、编译安装,从下载安装包,到部署安装目录。如果有什么觉得不理解的或者有什么认为本篇有误的,欢迎各位大佬来探讨。

       如何学会一门it技术?刚开始接触的一门新的课程时,都会有点发怵的,但是等你学完了,回头细想,也没什么难得嘛。如果学习MySQL课程时,除了理论知识外,最重要的就是把MySQL服务搭建出来,学会本章,你会发现没有什么难的,无他唯熟尔。如果想了解MySQL如何使用,点MySQL专栏 如果想了解更多运维知识,点我博客主页 学无止境,让我们一起学习下去吧。

rpm方式安装

       注意:每种安装方式后,需要恢复初始环境,或者卸载msyql、mariadb服务,方便一点的是实验环境中回滚快照,生产环境中卸载服务。

下载软件包

       既然要安装,就需要有安装包,我们先从下载安装包开始去下载,注意自己的主机和版本,我这里用的是Centos7.9

操作步骤(附图):官网下载地址→MySQLrpm包官网下载

前置配置

       下载后创建一个存放rpm包目录,或使用已有的目录,并检查系统内是否有自带的mariadb服务,有则卸载没有就忽略。

1. [root@daxia ~]# mkdir /rpmdir
2. [root@daxia ~]# ls /rpmdir/
3. mysql-community-client-5.7.40-1.el7.x86_64.rpm  mysql-community-libs-5.7.40-1.el7.x86_64.rpm
4. mysql-community-common-5.7.40-1.el7.x86_64.rpm  mysql-community-server-5.7.40-1.el7.x86_64.rpm
5. [root@daxia ~]# rpm -qa |grep mariadb
6. [root@daxia ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

安装MySQL

安装,两个参数分别表示强制安装和忽略依赖

1. [root@daxia ~]# rpm -ivh /rpmdir/* --nodeps --force
2. [root@daxia ~]# rpm -qa |grep mysql
3. mysql-community-client-5.7.40-1.el7.x86_64
4. mysql-community-server-5.7.40-1.el7.x86_64
5. mysql-community-common-5.7.40-1.el7.x86_64
6. mysql-community-libs-5.7.40-1.el7.x86_64

查看版本,启动mysql,登录发现要密码, 去查看log日志。最后查看到密码是D5r-mlkCMuIf

1. [root@daxia ~]# mysql --version
2. mysql  Ver 14.14 Distrib 5.7.40, for Linux (x86_64) using  EditLine wrapper
3. [root@daxia ~]# systemctl start mysqld
4. [root@daxia ~]# mysql
5. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
6. [root@daxia ~]# grep password /var/log/mysqld.log 
7. 2023-06-05T00:21:35.815624Z 1 [Note] A temporary password is generated for root@localhost: D5r-mlkCMuIf
8. 2023-06-05T00:21:39.800941Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)

创建密码,第一次输入日志中的临时密码,第二次输入新密码(符合密码复杂性要求8位以上大小写特殊字符)。

1. [root@daxia ~]# mysqladmin -uroot -p password
2. Enter password:                     #临时密码
3. New password:                       #新密码

yum方式安装

       注意:每种安装方式后,需要恢复初始环境,或者卸载msyql、mariadb服务,方便一点的是实验环境中回滚快照,生产环境中卸载服务。

下载软件包

指定官网源,安装mysql。

1. [root@daxia ~]# wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2. #省略安装部分
3. [root@daxia ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm 
4. [root@daxia ~]# yum install -y mysql-community-server --nogpgcheck

安装MySQL

       启动mysql,登录时发现需要密码,这时我们还是去看日志文件中的临时密码,登录即可。符合密码复杂性要求8位以上大小写特殊字符。

1. [root@daxia ~]# systemctl start mysqld
2. [root@daxia ~]# mysql
3. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
4. [root@daxia ~]# grep password /var/log/mysqld.log 
5. 2023-06-05T00:59:00.492033Z 1 [Note] A temporary password is generated for root@localhost: el55BgQwll/t
6. 2023-06-05T00:59:14.381115Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
7. [root@daxia ~]# mysqladmin -uroot -p password
8. Enter password:             #临时密码
9. New password:               #新密码

可以通过修改安全策略的方式,只校验密码长度(8位)

1. mysql> set global validate_password_policy=0
2.     -> ;
3. Query OK, 0 rows affected (0.00 sec)
4. 
5. mysql> alter user root@localhost identified by '12345678';
6. Query OK, 0 rows affected (0.00 sec)
7. 
8. mysql> exit
9. Bye
10. [root@daxia ~]# mysql -uroot -p12345678

二进制方式安装

       注意:每种安装方式后,需要恢复初始环境,或者卸载msyql、mariadb服务,方便一点的是实验环境中回滚快照,生产环境中卸载服务。

下载软件包

       官网下载地址二进制包官网下载

安装MySQL

       二进制安装这里就使用脚本了,注意查看脚本注意事项。虽然我使用的是脚本,但还是强烈建议自行编辑命令,脚本写的很简单,仅用来二进制MySQL也够了,如果学习脚本请参考Linux入门到精通专栏

1. [root@localhost /]# mkdir /sh
2. [root@localhost /]# cd /sh
3. [root@localhost sh]# vim mysql.sh
4. [root@localhost sh]# mv /mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz /usr/src
5. [root@localhost sh]# sh mysql.sh 
6. #!/bin/bash
7. 
8. #把mysql安装包放到/usr/src/目录下。
9. #二进制安装MySQL,请使用source执行脚本否则环境变量不生效(密码为$pass,默认为登录状态)。
10. #登录mysql后密码修改命令:alter user root@localhost identified by '密码';
11. 
12. #解压mysq-5.7.40
13. tar zxf /usr/src/mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
14. mv /usr/local/mysql-5.7.40-linux-glibc2.12-x86_64 /usr/local/mysql
15. 
16. #删除冲突软件
17. rpm -e mariadb-libs --nodeps
18. 
19. #创建/data目录并赋权
20. mkdir -p /usr/local/mysql/data
21. groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql
22. chown -R mysql:mysql /usr/local/mysql/
23. 
24. #编写my.cnf配置文件
25. cat >> /etc/my.cnf << end
26. [mysqld]
27. basedir=/usr/local/mysql
28. datadir=/usr/local/mysql/data
29. pid-file=/usr/local/mysql/data/mysql.pid
30. log_error=/usr/local/mysql/data/mysql.log
31. socket=/tmp/mysql.sock
32. end
33. 
34. #启动脚本
35. cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
36. 
37. #设置环境变量
38. sed -i '2i export PATH=\$PATH:/usr/local/mysql/bin'  /etc/profile
39. source /etc/profile
40. 
41. #初始化mysql
42. mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
43. 
44. #启动mysql
45. /etc/init.d/mysqld start
46. #systemctl管理
47. cat >> /etc/systemd/system/mysqld.service << end
48. [Unit]
49. Description=MySQL Server
50. Documentation=man:mysqld(8)
51. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
52. After=network.target
53. After=syslog.target
54. [Install]
55. WantedBy=multi-user.target
56. [Service]
57. User=mysql
58. Group=mysql
59. ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
60. LimitNOFILE = 5000
61. end
62. systemctl restart mysqld
63. 
64. #查看mysql初始密码并登录
65. pass=$(grep password /usr/local/mysql/data/mysql.log | grep 'password is' | awk '{print $NF}')
66. export pass
67. 
68. mysql -uroot -p$pass
69. 
70. [root@localhost sh]# sh mysql.sh

执行后自动登录MySQL,需要修改密码。

直接在里面修改密码,修改后退出。

1. mysql> alter user root@localhost identified by '123';
2. Query OK, 0 rows affected (0.00 sec)
3. 
4. mysql> exit
5. Bye

       测试登录,我直接登录时发现登录不了,想了下哪里出问题了,如果没安装成功也不可能执行脚本后就自动登录到MySQL里面。查看了下位置变量/etc/profile发现路径也插入成功了,再次执行source后就可以登录了。

1. [root@localhost sh]# mysql -uroot -p123
2. bash: mysql: command not found...
3. [root@localhost sh]# source /etc/profile
4. [root@localhost sh]# mysql -uroot -p123
5. mysql: [Warning] Using a password on the command line interface can be insecure.
6. Welcome to the MySQL monitor.  Commands end with ; or \g.
7. Your MySQL connection id is 4
8. Server version: 5.7.40 MySQL Community Server (GPL)
9. 
10. Copyright (c) 2000, 2022, Oracle and/or its affiliates.
11. 
12. Oracle is a registered trademark of Oracle Corporation and/or its
13. affiliates. Other names may be trademarks of their respective
14. owners.
15. 
16. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
17. 
18. mysql> show databases;
19. +--------------------+
20. | Database           |
21. +--------------------+
22. | information_schema |
23. | mysql              |
24. | performance_schema |
25. | sys                |
26. +--------------------+
27. 4 rows in set (0.00 sec)

编译方式安装

       注意:每种安装方式后,需要恢复初始环境,或者卸载msyql、mariadb服务,方便一点的是实验环境中回滚快照,生产环境中卸载服务。

下载软件包

       编译安装MySQL前需要先安装编译工具和编译版本的MySQL包。下载网址如下,根据自身需求安装对应的版本即可。

cmake-3.26.4.tar.gz                 Download | CMake

ncurses-5.9.tar.gz                     ftp://ftp.gnu.org/gnu/ncurses/

bison-3.8.1.tar.gz                     Index of /gnu/bison

mysql-5.7.40.tar.gz       http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.40.tar.gz

Boost_1_59_0.tar.gz http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

下载后直接把五个包放到/usr/local/src下

1. [root@daxia ~]# cd /usr/local/src
2. [root@daxia src]# ls
3. bison-3.8.1.tar.gz  boost_1_59_0.tar.gz  cmake-3.26.4.tar.gz  mysql-5.7.40.tar.gz  ncurses-5.9.tar.gz

安装编译工具

1. [root@daxia src]# tar zxf cmake-3.26.4.tar.gz 
2. [root@daxia src]# cd cmake-3.26.4/
3. [root@daxia cmake-3.26.4]# ./bootstrap && gmake && gmake install            #执行这个命令报错,如果报错就执行下面命令下载ssl然后在安装
4. [root@daxia cmake-3.26.4]# yum install -y openssl openssl-devel
5. [root@daxia cmake-3.26.4]# cd /usr/local/src
6. [root@daxia src]# tar zxf ncurses-5.9.tar.gz 
7. [root@daxia src]# cd ncurses-5.9/
8. [root@daxia ncurses-5.9]# ./configure && make && make install
9. [root@daxia ncurses-5.9]# cd /usr/local/src/
10. [root@daxia src]# tar zxf bison-3.8.1.tar.gz 
11. [root@daxia src]# cd bison-3.8.1/
12. [root@daxia bison-3.8.1]# ./configure && make &&make install
13. [root@daxia bison-3.8.1]# cd /usr/local/src
14. [root@daxia src]# tar zxf boost_1_59_0.tar.gz 
15. [root@daxia src]# mv boost_1_59_0 /usr/local/boost

创建用户和用户组以及mysql存放目录

1. [root@daxia ~]# groupadd -r mysql
2. [root@daxia ~]# useradd -r -g mysql -s /bin/false -M mysql
3. [root@daxia ~]# mkdir -p /usr/local/mysql/data

安装MySQL

1. [root@daxia src]# cd /usr/local/src
2. [root@daxia src]# tar zxf mysql-5.7.40.tar.gz 
3. [root@daxia src]# cd mysql-5.7.40/
4. [root@daxia mysql-5.7.40]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_SYSTEMD=1 -DWITH_BOOST=/usr/local/boost

上述参数说明

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #[MySQL 安装的根目录] -DMYSQL_DATADIR=/usr/local/mysql /data  #[MySQL 数据库文件存放目录]

-DSYSCONFDIR=/etc                       #[MySQL 配置文件所在目录]

-DWITH_MYISAM_STORAGE_ENGINE=1          #[添加 MYISAM 引擎支持 ]

-DWITH_INNOBASE_STORAGE_ENGINE=1        #[添加InnoDB引擎支持]

-DWITH_ARCHIVE_STORAGE_ENGINE=1         #[添加 ARCHIVE 引擎支持 ]

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock       #[指定 mysql.sock 位置 ]

-DWITH_PARTITION_STORAGE_ENGINE=1       #[安装支持数据库分区 ]

-DEXTRA_CHARSETS=all                    #[使MySQL 支持所有的扩展字符]

-DDEFAULT_CHARSET=utf8                  #[设置 MySQL 的默认字符集为utf8]

-DDEFAULT_COLLATION=utf8_general_ci     #[设置默认字符集校对规则 ]

-DWITH-SYSTEMD=1                        #[可以使用systemd控制mysql服务]

-DWITH_BOOST=/usr/local/boost           #[指向 boost 库所在目录]

       编译安装,使用这个方法可以加速安装方式,-j 参数表示根据 CPU 核数指定编译时的线程数,可以加快编译速度。默认为 1 个线程编译。 平常使用的是make && make install

[root@daxia mysql-5.7.40]# make -j $(grep processor /proc/cpuinfo | wc -l) && make install

经过漫长的编译安装过程,如果报错,查看报错信息。如果没有报错,添加path路径

1. [root@daxia mysql-5.7.40]# vim /etc/profile
2. export PATH=$PATH:/usr/local/mysql/bin
3. [root@daxia mysql-5.7.40]# source /etc/profile

设置权限,"."表示当前目录

1. [root@daxia mysql-5.7.40]# cd /usr/local/mysql
2. [root@daxia mysql]# chown -R mysql:mysql .

创建配置文件,如果有原文件就覆盖掉

1. [root@daxia mysql]# vim /etc/my.cnf
2. [mysqld]
3. basedir=/usr/local/mysql/
4. datadir=/usr/local/mysql/data
5. pid_file=/usr/local/mysql/data/mysqld.pid
6. log_error=/usr/local/mysql/data/mysql.log
7. socket=/tmp/mysql.sock

设置启动,把默认的pid文件指定到/var/run/mysqld/目录。

1. [root@daxia mysql]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service  /usr/lib/systemd/system/
2. [root@daxia mysql]# vim /usr/lib/systemd/system/mysqld.service                                                  #修改下面两行
3. PIDFile=/usr/local/mysql/data/mysqld.pid                                                                        #修改pid文件位置
4. ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS      #修改pid文件位置

启动MySQL并查看运行状态

1. [root@daxia mysql]# systemctl daemon-reload
2. [root@daxia mysql]# systemctl start mysqld
3. [root@daxia mysql]# systemctl status mysqld
4.  mysqld.service - MySQL Server
5.    Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
6.    Active: active (running) since Mon 2023-06-05 15:00:00 CST; 4s ago
7.      Docs: man:mysqld(8)
8.            http://dev.mysql.com/doc/refman/en/using-systemd.html
9.   Process: 114376 ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
10.   Process: 114319 ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
11.  Main PID: 114379 (mysqld)
12.     Tasks: 27
13.    CGroup: /system.slice/mysqld.service
14.            └─114379 /usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid
15. 
16. Jun 05 14:59:56 daxia systemd[1]: Starting MySQL Server...
17. Jun 05 14:59:56 daxia mysqld_pre_systemd[114319]: mktemp: failed to create file via template ‘/var/lib/mysql-files/install…irectoryJun 05 14:59:56 daxia mysqld_pre_systemd[114319]: chmod: cannot access ‘’: No such file or directory
18. Jun 05 14:59:56 daxia mysqld_pre_systemd[114319]: /usr/local/mysql/bin/mysqld_pre_systemd: line 43: : No such file or directory
19. Jun 05 14:59:56 daxia mysqld_pre_systemd[114319]: /usr/local/mysql/bin/mysqld_pre_systemd: line 44: $initfile: ambiguous redirect
20. Jun 05 15:00:00 daxia systemd[1]: Started MySQL Server.
21. Hint: Some lines were ellipsized, use -l to show in full.

登录MySQL

1. [root@daxia mysql]# grep password /usr/local/mysql/data/mysql.log               #查看默认密码 密码为u6vh%+jQTrkG
2. 2023-06-05T06:59:57.844601Z 1 [Note] A temporary password is generated for root@localhost: u6vh%+jQTrkG
3. [root@daxia mysql]# mysqladmin -uroot -p password
4. Enter password:             #输入初始密码
5. New password:               #输入新密码(建议符合密码复杂性要求,否则会提醒)
6. Confirm new password:       #再次输入新密码
7. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
8. [root@daxia mysql]# mysql -uroot -p123
9. mysql: [Warning] Using a password on the command line interface can be insecure.
10. Welcome to the MySQL monitor.  Commands end with ; or \g.
11. Your MySQL connection id is 3
12. Server version: 5.7.40 Source distribution
13. 
14. Copyright (c) 2000, 2022, Oracle and/or its affiliates.
15. 
16. Oracle is a registered trademark of Oracle Corporation and/or its
17. affiliates. Other names may be trademarks of their respective
18. owners.
19. 
20. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
21. 
22. mysql> show databases;
23. +--------------------+
24. | Database           |
25. +--------------------+
26. | information_schema |
27. | mysql              |
28. | performance_schema |
29. | sys                |
30. +--------------------+
31. 4 rows in set (0.00 sec)

总结四种安装方式

       到这里,我们就安装了四次MySQL服务了,相信你也明白了每种方式的优缺点。rpm和yum安装方式虽然会快,但是不能自定义安装,有些甲方需求无法满足,而二进制安装虽然可以定义一些需求,但是只能简单地一些定义,而编译安装无疑是最复合自定义的要求,但是安装时间较长,需要安装几款编译工具。如果要求不是很多的情况下建议使用二进制安装MySQL,如果是个人练习使用,可以使用rpm或yum方式安装。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
关系型数据库 MySQL 数据库
MYSQL解压版安装笔记
MYSQL解压版安装笔记
5 0
|
1天前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL5.7非安装版的安装过程
MySQL5.7非安装版的安装过程
8 1
|
1天前
|
关系型数据库 MySQL 数据安全/隐私保护
【极光系列】Windows安装Mysql8.0版本
【极光系列】Windows安装Mysql8.0版本
16 1
|
1天前
|
关系型数据库 MySQL 开发工具
【开发工具专题_02】windows操作系统下载与安装mysql8.0.18教程
【开发工具专题_02】windows操作系统下载与安装mysql8.0.18教程
7 0
|
12天前
|
NoSQL 关系型数据库 MySQL
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
不同系统下进行MySQL安装、MongoDB安装、Redis安装
55 5
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
|
14天前
|
关系型数据库 MySQL Linux
MySQL技能完整学习列表2、MySQL简介和安装
MySQL技能完整学习列表2、MySQL简介和安装
27 0
|
14天前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL8.0绿色版本——最纯净的安装体验(免去卸载不掉只能重做系统的‘囧‘境)
MySQL8.0绿色版本——最纯净的安装体验(免去卸载不掉只能重做系统的‘囧‘境)
50 0
|
14天前
|
NoSQL 关系型数据库 Linux
阿里云RDS购买Linux——安装redis服务
阿里云RDS购买Linux——安装redis服务
30 0
|
14天前
|
Java 关系型数据库 应用服务中间件
阿里云RDS购买Linux完整过程——安装java环境并跑起来tomcat
阿里云RDS购买Linux完整过程——安装java环境并跑起来tomcat
23 0
|
15天前
|
关系型数据库 MySQL 数据安全/隐私保护
【Docker】安装MySQL 通俗易懂 亲测没有任何问题
【Docker】安装MySQL 通俗易懂 亲测没有任何问题
31 0