1. 程式人生 > >centos7 安裝配置MySQL5.7

centos7 安裝配置MySQL5.7

在CentOS中預設安裝有MariaDB,這個是MySQL的分支,但為了需要,還是要在系統中安裝MySQL,而且安裝完成之後可以直接覆蓋掉MariaDB。

1 下載並安裝MySQL官方的 Yum Repository

[[email protected] ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

  使用上面的命令就直接下載了安裝用的Yum Repository,大概25KB的樣子,然後就可以直接yum安裝了。

[[email protected] ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

  之後就開始安裝MySQL伺服器。

[[email protected] ~]# yum -y install mysql-community-server

  這步可能會花些時間,安裝完成後就會覆蓋掉之前的mariadb。

至此MySQL就安裝完成了,然後是對MySQL的一些設定。

2 MySQL資料庫設定

  首先啟動MySQL

[[email protected] ~]# systemctl start  mysqld.service

  檢視MySQL執行狀態,執行狀態如圖:

[[email protected] ~]# systemctl status mysqld.service

  此時MySQL已經開始正常執行,不過要想進入MySQL還得先找出此時root使用者的密碼,通過如下命令可以在日誌檔案中找出密碼:

[[email protected] ~]# grep "password" /var/log/mysqld.log

  如下命令進入資料庫:

[[email protected] ~]# mysql -uroot -p

  輸入初始密碼,此時不能做任何事情,因為MySQL預設必須修改密碼之後才能操作資料庫:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

  這裡有個問題,新密碼設定的時候如果設定的過於簡單會報錯:

  原因是因為MySQL有密碼設定的規範,具體是與validate_password_policy的值有關:

 

  MySQL完整的初始密碼規則可以通過如下命令檢視:

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 4     |
| 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)

  密碼的長度是由validate_password_length決定的,而validate_password_length的計算公式是:

validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

我的是已經修改過的,初始情況下第一個的值是ON,validate_password_length是8。可以通過如下命令修改:

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

  設定之後就是我上面查出來的那幾個值了,此時密碼就可以設定的很簡單,例如1234之類的。到此資料庫的密碼設定就完成了。

  但此時還有一個問題,就是因為安裝了Yum Repository,以後每次yum操作都會自動更新,需要把這個解除安裝掉:

[[email protected] ~]# yum -y remove mysql57-community-release-el7-10.noarch

  此時伺服器端可以訪問MySQL了,如果想通過Navicat等遠端工具訪問資料庫還需要賦權:

  對於mysql資料庫沒有授權,只需要用一條命令就可以了:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

輸入上句命令時,如果還提示密碼不符合要求,則再執行一遍:set global validate_password_policy=0;

輸入後使修改生效還需要下面的語句

FLUSH PRIVILEGES;

MySQL5.7遇到的問題有:(持續更新。。。)

一、MySQL安裝後啟動報:Job for mysqld.service failed because the control process exited with error code的錯誤,一般是原來安裝的MySQL沒有解除安裝乾淨,可以執行如下步驟解除安裝徹底:

1、解除安裝系統自帶Mariadb,mariadb是Mysql的一個分支,具有和mysql相同的API和命令列。
檢視mariadb資料庫:

rpm -qa | grep mariadb

解除安裝mariadb:rpm -e --nodeps mariadb檔名

2、為了避免mysql有之前安裝的碎片,解除安裝mysql

檢視與mysql資料庫:

rpm -qa | grep mysql


解除安裝mysql資料庫:rpm -e --nodeps mysql資料庫,

這裡如果不能一次性解除安裝整個MySQL,可以多次解除安裝MySQL下分支,解除安裝rpm -qa | grep mysql查詢出來分支

3、刪除etc目錄下的my.cnf檔案:

rm /etc/my.cnf

這樣解除安裝乾淨後再執行前面的安裝MySQL,就沒問題了
 

二、Mysql5.7版本有sql_mode=only_full_group的問題,解決方法時:

在MySQL的配置檔案my.cnf中新增:

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然後重啟就可以了