linux-centos7安裝mysql5.7步驟

linux-centos7安裝mysql5.7步驟

與 CentOS 6 下 Yum 安裝 MySQL 5.7 備忘 基本沒有特別大的變化。一路 yum ,非常簡單。

環境說明

CentOS 7(Minimal Install)

$ cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)

安裝和配置步驟

1.配置 yum 源

去 MySQL 官網下載 YUM 的 RPM 安裝包,http://dev.mysql.com/downloads/repo/yum/

下載 mysql 源安裝包

$ curl -LO http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

安裝 mysql 源

$ sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm

檢查 yum 源是否安裝成功

$ sudo yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community MySQL Connectors Community 21
mysql-tools-community MySQL Tools Community 38
mysql57-community MySQL 5.7 Community Server 130

如上所示,找到了 mysql 的安裝包

2.安裝

$ sudo yum install mysql-community-server

3.啟動

安裝服務

$ sudo systemctl enable mysqld

啟動服務

$ sudo systemctl start mysqld

查看服務狀態

$ sudo systemctl status mysqld

4.修改 root 默認密碼

MySQL 5.7 啟動後,在 /var/log/mysqld.log 文件中給 root 生成了一個默認密碼。通過下面的方式找到 root 默認密碼,然後登錄 mysql 進行修改:

$ grep 'temporary password' /var/log/mysqld.log
[Note] A temporary password is generated for root@localhost: **********

登錄 MySQL 並修改密碼

$ mysql -u root -p
Enter password: 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

注意:MySQL 5.7 默認安裝了密碼安全檢查插件(validate_password),默認密碼檢查策略要求密碼必須包含:大小寫字母、數字和特殊符號,並且長度不能少於 8 位。

通過 MySQL 環境變量可以查看密碼策略的相關信息:

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 | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

具體修改,參見 http://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy

指定密碼校驗策略

$ sudo vi /etc/my.cnf
[mysqld]
# 添加如下鍵值對, 0=LOW, 1=MEDIUM, 2=STRONG
validate_password_policy=0

禁用密碼策略

$ sudo vi /etc/my.cnf
	
[mysqld]
# 禁用密碼校驗策略
validate_password = off

重啟 MySQL 服務,使配置生效

$ sudo systemctl restart mysqld

5.添加遠程登錄用戶

MySQL 默認只允許 root 帳戶在本地登錄,如果要在其它機器上連接 MySQL,必須修改 root 允許遠程連接,或者添加一個允許遠程連接的帳戶,為了安全起見,本例添加一個新的帳戶:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'secret' WITH GRANT OPTION;

6.配置默認編碼為 utf8

MySQL 默認為 latin1, 一般修改為 UTF-8

$ vi /etc/my.cnf
[mysqld]
# 在myslqd下添加如下鍵值對
character_set_server=utf8
init_connect='SET NAMES utf8'

重啟 MySQL 服務,使配置生效

$ sudo systemctl restart mysqld

查看字符集

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec

7.開啟端口

$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ sudo firewall-cmd --reload

8.mysql 5.x創建表、創建函數報錯1055

Err1055,出現這個問題往往是在執行sql語句時候,在最後一行會出現這個問題。

?

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column

'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause;

this is incompatible with sql_mode=only_full_group_by

解決方法:

mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

9.mysql 5.x插入空值報錯(空值為null也可以解決)

insert into log values('','admin','31','002t')

這樣寫就會報錯: Incorrect integer value: '' for column 'id' at row 1

一般我們是認為應該沒錯誤的。後來查了下MYSQL的資料。發現5以上的版本如果是空值應該要寫NULL

這種問題一般mysql 5.x上出現。我用的mysql5.1

官方解釋說:得知新版本mysql對空值插入有"bug",要在安裝mysql的時候去除默認勾選的enable strict SQL mode

那麼如果我們安裝好了mysql怎麼辦了,解決辦法是更改mysql中的配置 my.ini

my.ini中查找sql-mode,

默認為sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",

將其修改為sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重啟mysql後即可

MySQL配置文件在Windows下叫my.ini,在MySQL的安裝根目錄下;在Linux下叫my.cnf,該文件位於/etc/my.cnf。

vi /etc/my.cnf

# 添加如下鍵值對, 0=LOW, 1=MEDIUM, 2=STRONG

validate_password_policy=0

# 禁用密碼校驗策略

validate_password = off

# 在myslqd下添加如下鍵值對

character_set_server=utf8

init_connect='SET NAMES utf8'

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

重啟 MySQL 服務,使配置生效

$ systemctl restart mysqld


分享到:


相關文章: