今天閒着沒事,玩玩CentOS7.7,結果在安裝MySQL-5.7.21時,各種坑,費勁巴拉的終於安裝上了。然後我又下載了MySQL-5.7.28,安裝試試,嗯,坑少了一點點,捂臉笑ing....................下面我整理一下,供大家參考,少採坑。CentOS7.7安裝Mysql5.7.28.在下一篇中。
一、安裝環境
--1. CentOS7.7 也就是這個映像文件:CentOS-7-x86_64-Minimal-1908.iso
--2. MySQL-5.7.21 也就是這個tar包:mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar
上傳mysql到linux上:
[root@m00 ~]# cd /opt/software
[root@m00 software]# ls
mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar
二、開始安裝
第一步:拆包
[root@m00 software]# tar -xvf mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar
mysql-community-libs-5.7.21-1.el6.x86_64.rpm
mysql-community-devel-5.7.21-1.el6.x86_64.rpm
mysql-community-server-5.7.21-1.el6.x86_64.rpm
mysql-community-test-5.7.21-1.el6.x86_64.rpm
mysql-community-embedded-5.7.21-1.el6.x86_64.rpm
mysql-community-client-5.7.21-1.el6.x86_64.rpm
mysql-community-libs-compat-5.7.21-1.el6.x86_64.rpm
mysql-community-common-5.7.21-1.el6.x86_64.rpm
mysql-community-embedded-devel-5.7.21-1.el6.x86_64.rpm
[root@m00 software]#
這些rpm包,我們只需要其中四個:
mysql-community-libs-5.7.21-1.el6.x86_64.rpm
mysql-community-server-5.7.21-1.el6.x86_64.rpm
mysql-community-client-5.7.21-1.el6.x86_64.rpm
mysql-community-common-5.7.21-1.el6.x86_64.rpm
第二步:卸載mariadb
--1. 查詢一下mariadb的相關包
[root@m00 software]# rpm -qa | grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
--2. 卸載查詢到的mariadb 加--nodeps 強制卸載哦
[root@m00 software]# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
CentOS7.7最小版默認安裝了mariadb-lib庫,而mysql-5.7不兼容這個庫,所以我們要卸載
第三步:安裝MySQL-5.7.21
玩Linux的你應該知道,安裝包都存在着一定的依賴關係,這裏我就直接說了,我們最終是想安裝mysql-server包,但是mysql-server依賴mysql-client包,而mysql-client依賴mysql-libs包,而mysql-libs依賴於mysql-common包。因此我們的安裝順序如下:
--1. 先安裝mysql-common
[root@m00 software]# rpm -ivh mysql-community-common-5.7.21-1.el6.x86_64.rpm
--2. 再安裝mysql-libs
[root@m00 software]# rpm -ivh mysql-community-libs-5.7.21-1.el6.x86_64.rpm
--3. 然後安裝mysql-client
[root@m00 software]# rpm -ivh mysql-community-client-5.7.21-1.el6.x86_64.rpm
--4. 最後安裝mysql-server
[root@m00 software]# rpm -ivh mysql-community-server-5.7.21-1.el6.x86_64.rpm
error: Failed dependencies:
/usr/bin/perl is needed by mysql-community-server-5.7.21-1.el6.x86_64
libsasl2.so.2()(64bit) is needed by mysql-community-server-5.7.21-1.el6.x86_64
net-tools is needed by mysql-community-server-5.7.21-1.el6.x86_64
perl(File::Path) is needed by mysql-community-server-5.7.21-1.el6.x86_64
perl(Getopt::Long) is needed by mysql-community-server-5.7.21-1.el6.x86_64
perl(POSIX) is needed by mysql-community-server-5.7.21-1.el6.x86_64
perl(strict) is needed by mysql-community-server-5.7.21-1.el6.x86_64
在我安裝mysql-server的rpm包時,提示安裝失敗,原因是server依賴軟件perl、net-tools 和庫文件libsasl2.so.2。這些地方就是要說的坑。
第四步:安裝依賴
我們可以先使用yum 安裝perl 和 net-tools的相關軟件
[root@m00 software]# yum -y install perl net-tools
而mysql-server所依賴的libsasl2.so.2,CentOS7.7最小版是沒有的,我各種百度,有人說從別的Linux的/usr/lib64/目錄下找到,然後放到CentOS7.7的相同路徑下,也有人說修改yum源的mysql-community庫什麼的,亂七八糟的。後來,我在這個網站上下載的libsasl2.so.2的rpm包,網址:http://www.rpmfind.net/linux/rpm2html/search.php?query=libsasl2.so.2()(64bit) 。上傳到linux上,安裝即可
[root@m00 software]# ls
lib64sasl2-2.1.25-12.1.mga3.x86_64.rpm
--4. 安裝libsasl2.so.2的rpm包
[root@m00 software]# rpm -ivh lib64sasl2-2.1.25-12.1.mga3.x86_64.rpm
第五步:再次安裝mysql-server
安裝完perl,net-tools和libsasl2.so.2後,我們再安裝mysql-server包,就成功了。
--再次安裝mysql-server
[root@m00 software]# rpm -ivh mysql-community-server-5.7.21-1.el6.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-server-5.7.21-1.e^C################################# [100%]
三、啓動mysql
費勁巴拉的成功安裝完mysql-5.7.21的四個rpm包後,我們就要按照以下步驟,啓動服務,找到默認密碼,進入MySQL,然後修改成你想要的密碼就行了。
第一步:啓動MySQL的服務
--1. 可以使用CentOS7.7的systemctl命令來啓動服務
[root@m00 ~]# systemctl start mysqld
-----------如果上述命令,報服務not found,就用以下命令啓動服務-----
[root@m00 ~]# service mysqld start
這裏要說一下,如果服務還是起不來,就查看/var/log/mysqld.log日誌文件,看報什麼錯,如果報以下紅字錯誤:
7:01.499040Z 0 [ERROR] /usr/sbin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 - No such file or directory)
2020-01-01T13:27:01.499057Z 0 [ERROR] Can't start server: can't create PID file: No such file or directory。
說明/var/run/目錄下是沒有mysqld目錄的,我們可以手動創建出來,但是需要修改權限,而且reboot後,這個目錄又不存在了,很噁心。這個時候我們可以採取一種一勞永逸的方式,修改/etc/my.cnf 和/etc/init.d/mysqld這兩個文件裏的/var/run/mysqld/...這個路徑。
1. 修改/etc/my.cnf
[root@m00 ~]# vi /etc/my.cnf
.......省略.........
log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid <==註釋掉或者修改這一行,重新指定路徑爲/tmp,參考下面
pid-file=/tmp/mysqld.pid
2. 修改/etc/init.d/mysqld
[root@m00 ~]# vi /etc/init.d/mysqld
......省略........
#get_mysql_option pid-file "/var/run/mysqld/mysqld.pid" mysqld mysqld_safe
#將上面的內容註釋掉或者修改,參考下面的內容
get_mysql_option pid-file "/tmp/mysqld.pid" mysqld mysqld_safe
mypidfile="$result"
.............省略..........
3. 這樣再啓動服務,就應該沒有問題了
第二步:查找密碼並登陸mysql
啓動服務後,mysql會生成一個默認的初始密碼,比較複雜。我們找到,並進入mysql。
1. 去mysqld.log日誌文件裏查看初始密碼,下面root@localhost:後的內容就是你的密碼。別複製我的密碼...呵呵
[root@m00 ~]# cat /var/log/mysqld.log | grep password
2020-01-01T13:02:09.836826Z 1 [Note] A temporary password is generated for root@localhost: UhctshQYt7%.
2. 登陸,輸入密碼(可以採用複製的方式,如果你願意手抄,當我沒說)
[root@m00 ~]# mysql -u root -p
Enter password: <==複製那個初始密碼,粘貼
第三步:修改密碼
這一步比較噁心,在CentOS7.7裏安裝的mysql-5.7版本,密碼策略默認設置的比較高,即要求密碼中要有大小寫字母,要有數字,還要有特殊字符。否則提示你: Your password does not satisfy the current policy requirements
1. 我們先修改密碼策略爲low
mysql> set global validate_password_policy=low;
2. 在查看密碼策略
mysql> show variables like '%validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
可以看到密碼的長度是8,如果你願意,你可以將密碼長度改爲6.
3. 將密碼長度改爲6
mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)
4. 修改你想要的密碼吧
mysql> alter user root@localhost identified by '單引號裏寫密碼'
到此爲止,mysql-5.7.21 就可以在CentOS7.7里正常使用了。
--------------------------------------------如有疑問,敬請留言--------------------------------------------------------------