1. 程式人生 > 其它 >linux之mysql5.7環境安裝與配置

linux之mysql5.7環境安裝與配置

注意:建議安裝之前,先解除安裝一遍,減少失敗報錯的機率!

1. tar.gz

1.1. 安裝

檢視是否安裝mysql和mariadb(mysql的一種,具體區別自行百度)
# 檢視是否安裝 mysql 和 mariadb,顯示有就解除安裝
[root@localhost]# rpm -qa | grep mysql
[root@localhost]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64

# 解除安裝掉 mariadb
[root@localhost]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
官網下載mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
使用xftp將下載好的mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz,上傳的linux中的/usr/local下
在 /usr/local 下進行解壓
# 解壓 mysql,壓縮包有點大,等待解壓
[root@localhost local]# tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz

# 重新命名 mysql
[root@localhost local]# mv mysql-5.7.33-linux-glibc2.12-x86_64 mysql
# 建立一個mysql的使用者,也可以使用系統root使用者,說明 資料庫被攻擊時,不會拿到root的許可權,去打亂你的linux系統
# 建議:跟著小編來操作,主要後面我會使用mysql的使用者  建立錯誤 刪除使用者命令 userdel 使用者名稱
[root@localhost local]# useradd -r -s /sbin/nologin mysql

# 檢視mysql使用者
[root@localhost local]# id mysql
uid=997(mysql) gid=995(mysql) groups=995(mysql)

# 進入到mysql資料夾中
[root@localhost local]# cd mysql

# 建立一個 data 資料夾,用於資料庫的存放
[root@localhost mysql]# mkdir data

# 修改 data 擁有者和許可權
[root@localhost mysql]# chown mysql:mysql data
[root@localhost mysql]# chmod 750 data

# 初始化mysql,得到mysql的初始化密碼
[root@localhost mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql
# 設定安全加密連線(SSL),資料傳輸採用加密形式,適用於敏感資料
[root@localhost mysql]# ./bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

# 修改mysql檔案
[root@localhost mysql]# vim support-files/mysql.server
# 拷貝指令碼
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql

# 啟動mysql服務
[root@localhost mysql]# service mysql start
Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
 SUCCESS!

# 登入mysql,輸入初始化密碼
[root@localhost mysql]# mysql -uroot -p
Enter password:
錯誤
# 登入mysql,遇到以下情況
[root@localhost mysql]# mysql -u root -p
bash: mysql: command not found...

# 一 在之前輸入 ./bin
[root@localhost mysql]# ./bin/mysql -u root -p

# 二 直接進入到 bin 目錄裡敲命令
[root@localhost mysql]# cd bin
[root@localhost bin]# mysql -u root -p

# 三 配置環境變數,在最後配置
[root@localhost mysql]# vim /etc/profile
# 配置內容 若PATH有多個配置使用 : 劃分
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:${MYSQL_HOME}/bin
配置內容展示
# 設定mysql密碼
mysql> set password = password('123456');
# 重新整理設定
mysql> flush privileges;
設定 mysql 編碼
# 先檢視 mysql 的預設編碼
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | latin1                           |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+

# 退出 mysql
mysql> exit
Bye

# 設定 mysql 的編碼為utf8
[root@localhost mysql]# vim /etc/my.cnf
將以下內容覆蓋原內容 注意:複製貼上時,第一個 # 會丟失,記得手動補上
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
重啟
# 重啟 mysql 服務
[root@localhost mysql]# service mysql restart

# 登入 mysql 並檢視編碼是否生效
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------------+
| 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/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
遠端連線
# 開啟遠端連線,在其他電腦中使用 sqlyog 進行連線訪問
mysql> grant all privileges on *.* to root@'%' identified by '123456';

# 重新整理設定
mysql> flush privileges;
防火牆
# 關閉防火牆,否則sqlyog連線不上 報 2002 錯誤
[root@localhost mysql]# systemctl stop firewalld.service

# 禁用防火牆自啟動,重啟伺服器時,無需在關閉防火牆
[root@localhost mysql]# systemctl disable firewalld.service
自啟動
# 設定 mysql 自啟動
[root@localhost mysql]# chkconfig --add mysql
安裝完畢!

1.2. 解除安裝

# 檢視是否安裝了mysql
[root@localhost /]# rpm -qa | grep mysql
[root@localhost /]# find / -name mysql
/run/lock/subsys/mysql
/etc/rc.d/init.d/mysql
/usr/local/mysql
/usr/local/mysql/bin/mysql
/usr/local/mysql/include/mysql
/usr/local/mysql/data/mysql

# 關掉mysql服務
[root@localhost /]# service mysql stop

# 一一刪除即可
[root@localhost /]# rm -rf /run/lock/subsys/mysql
[root@localhost /]# rm -rf /etc/rc.d/init.d/mysql
[root@localhost /]# rm -rf /usr/local/mysql
解除安裝完畢!

2. rpm

2.1. 安裝

進入官網,找到mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar並下載

上傳到 linux 系統中的 /usr/local 下

# 執行命令解壓
[root@localhost local]# tar -xvf mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar
mysql-community-client-5.7.33-1.el7.x86_64.rpm
mysql-community-common-5.7.33-1.el7.x86_64.rpm
mysql-community-devel-5.7.33-1.el7.x86_64.rpm
mysql-community-embedded-5.7.33-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.33-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.33-1.el7.x86_64.rpm
mysql-community-libs-5.7.33-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm
mysql-community-server-5.7.33-1.el7.x86_64.rpm
mysql-community-test-5.7.33-1.el7.x86_64.rpm

# 按照順序執行 rpm 安裝命令,以下四個rpm包即可
[root@localhost local]# rpm -ivh mysql-community-common-5.7.33-1.el7.x86_64.rpm
[root@localhost local]# rpm -ivh mysql-community-libs-5.7.33-1.el7.x86_64.rpm
[root@localhost local]# rpm -ivh mysql-community-client-5.7.33-1.el7.x86_64.rpm
[root@localhost local]# rpm -ivh mysql-community-server-5.7.33-1.el7.x86_64.rpm

# 開啟 mysql 服務
[root@localhost local]# service mysqld start
# 檢視 mysql 服務狀態
[root@localhost local]# service mysqld status

# 檢視初始密碼,在開啟 mysql 服務時,也就是執行 service mysqld start 命令 ,就生成了初始化密碼
[root@localhost local]# cat /var/log/mysqld.log | more
# 顯示 mysql 日誌,按 enter 下一行,找到 root@localhost 後面就是密碼
密碼
# 使用初始化密碼登入 mysql,複製初始化密碼,按住 shift + insert 鍵,複製進去,回車登入
[root@localhost local]# mysql -uroot -p
Enter password:

# 登入成功後,必須先修改密碼,才能執行其他配置操作,由於mysql 5.7版本系列,有預設的密碼規則,一定要符合對應的字元資訊
# 這裡的密碼修改,就按照小編這裡的一致,特殊字元,大小寫,數字等
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '@Ch123456';

# 一定是修改初始化密碼後!檢視密碼規則,並修改密碼規則
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      |
+--------------------------------------+--------+

# LOW:0 | MEDIUM:1 | STRONG:2
# 0/LOW:只檢查長度
# 1/MEDIUM:檢查長度、數字、大小寫、特殊字元
# 2/STRONG:檢查長度、數字、大小寫、特殊字元字典檔案
# 設定 validate_password_policy 為 MEDIUM 修改為 LOW 表示密碼強度等級
mysql> set global validate_password_policy=LOW;

# 設定 validate_password_length 為 8 修改為 6 表示密碼長度
mysql> set global validate_password_length=6;

# 最終修改密碼,建議密碼設定成123456
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
編碼
# 檢視mysql編碼
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

# 退出mysql登入,查詢配置檔案
[root@localhost mysql]# find / -iname '*.cnf' -print
/etc/pki/tls/openssl.cnf
/etc/my.cnf
/var/lib/mysql/auto.cnf

# 修改配置檔案
[root@localhost mysql]# vim /etc/my.cnf

# 在 [mysqld] 下,新增以下兩段程式碼
collation_server = utf8_general_ci
character_set_server = utf8

# 重啟 mysql 服務
[root@localhost mysql]# service mysqld restart

# 登入 mysql 並檢視編碼,顯示以下資料對比表示修改成功!
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
遠端連線
# 開啟遠端連線
mysql> grant all privileges on *.* to root@'%' identified by '123456';

# 執行生效
mysql> flush privileges;

# rpm 安裝無需配置自啟
防火牆
# 關閉防火牆,否則sqlyog連線不上 報 2002 錯誤
[root@localhost mysql]# systemctl stop firewalld.service

# 禁用防火牆自啟動,重啟伺服器時,無需在關閉防火牆
[root@localhost mysql]# systemctl disable firewalld.service
檢視 mysql 版本
# 檢視 mysql 命令
[root@localhost mysql]# mysql --version
mysql  Ver 14.14 Distrib 5.7.33, for linux-glibc2.12 (x86_64) using  EditLine wrapper
安裝完畢!

2.2. 解除安裝

# 檢視是否安裝了mysql
[root@localhost local]# pm -qa|grep mysql
mysql-community-common-5.7.33-1.el7.x86_64
mysql-community-client-5.7.33-1.el7.x86_64
mysql-community-server-5.7.33-1.el7.x86_64
mysql-community-libs-5.7.33-1.el7.x86_64

# 停止mysql的服務並刪除,使用 rpm -ev xx 進行刪除,區分安裝的反順序
[root@localhost local]# rpm -ev mysql-community-server-5.7.33-1.el7.x86_64
[root@localhost local]# rpm -ev mysql-community-client-5.7.33-1.el7.x86_64
[root@localhost local]# rpm -ev mysql-community-libs-5.7.33-1.el7.x86_64
[root@localhost local]# rpm -ev mysql-community-common-5.7.33-1.el7.x86_64

# 檢視是否還有mysql遺留資料
# 資料庫目錄 /var/lib/mysql
# 配置檔案 /usr/share/mysql(mysql.server命令及配置檔案)
# 相關命令 /usr/bin (mysqladmin mysqldump等命令)
[root@localhost local]# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql

# 將上面顯示的資料夾一一刪除
[root@localhost local]# rm -rf /var/lib/mysql/
[root@localhost local]# rm -rf /usr/share/mysql

# 綜上步驟,可以將 mysql 徹底刪除乾淨
解除安裝完畢!

3. yum

3.1. 安裝

官網裡面,找到與自己linux系統對應的rpm,並下載 說明:這裡的rpm安裝後會加載出mysql的源,跟著小編走就行了哈~~~
兩種方式在linux中獲取到 rpm 安裝包,在linux中通過 yum 進行安裝
# 方式一 :將下載好的 rpm 手動移入到 linux 中

# 方式二 :直接在 linux 中,通過命令 + 下載連結獲取到

# 說明 : 方式一 下載 windows 上,就還需要手動拖入到 linux 中,方式二 拿到下載連結,在 linux 中,使用命令 + 連結,直接到linux中
# 使用命令網上下載資源,先到 /usr/local 資料夾中
[root@localhost local]# wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

# 下載完成後,會在當前檔案下,安裝源
[root@localhost local]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm

# 安裝完成後,檢視新安裝的源
[root@localhost local]# yum repolist all | grep mysql
# 先取消掉預設的 mysql 8 的安裝
[root@localhost local]# yum-config-manager --disable mysql80-community

# 設定 mysql 7 的預設安裝
[root@localhost local]# yum-config-manager --enable mysql57-community
# 安裝 mysql 服務,此過程漫長,預設安裝 mysql 5.7 系列最新的版本
[root@localhost local]# yum install mysql-community-server

# 開啟 mysql 服務
[root@localhost local]# systemctl start mysqld.service

# 獲取初始化密碼,在 /var/log/mysqld.log 中獲取
[root@localhost local]# grep "temporary password" /var/log/mysqld.log
# 使用初始化密碼登入 mysql
[root@localhost local]# mysql -u root -p
Enter password:
密碼
# 登入成功,修改密碼,當前有預設的密碼規則
mysql> set password='@Ch123456';

# 更改 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      |
+--------------------------------------+--------+

# LOW:0 | MEDIUM:1 | STRONG:2
# 0/LOW:只檢查長度
# 1/MEDIUM:檢查長度、數字、大小寫、特殊字元
# 2/STRONG:檢查長度、數字、大小寫、特殊字元字典檔案
# 設定 validate_password_policy 為 MEDIUM 修改為 LOW 表示密碼強度等級
mysql> set global validate_password_policy=LOW;

# 設定 validate_password_length 為 8 修改為 6 表示密碼長度
mysql> set global validate_password_length=6;

# 檢視是否生效
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 6      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | LOW |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

# 最終修改密碼,建議密碼設定成123456
mysql> set password='123456';
編碼
# 檢視mysql編碼
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

# 退出mysql登入,查詢配置檔案
[root@localhost mysql]# find / -iname '*.cnf' -print
/etc/pki/tls/openssl.cnf
/etc/my.cnf
/var/lib/mysql/auto.cnf

# 修改配置檔案
[root@localhost mysql]# vim /etc/my.cnf

# 在 [mysqld] 下,新增以下兩段程式碼
collation_server = utf8_general_ci
character_set_server = utf8

# 重啟 mysql 服務
[root@localhost mysql]# service mysqld restart

# 登入 mysql 並檢視編碼,顯示以下資料對比表示修改成功!
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
遠端連線
# 開啟遠端連線
mysql> grant all privileges on *.* to root@'%' identified by '123456';

# 開啟遠端時報錯,以下提示資訊,請注意
# Your password does not satisfy the current policy requirements 當前密碼不符合規則
# 解決方案 重新執行一遍 改變密碼的規則的程式碼
# 設定 validate_password_policy 為 MEDIUM 修改為 LOW 表示密碼強度等級
mysql> set global validate_password_policy=LOW;

# 設定 validate_password_length 為 8 修改為 6 表示密碼長度
mysql> set global validate_password_length=6;

# 檢視是否生效
mysql> SHOW VARIABLES LIKE 'validate_password%';

# 執行生效
mysql> flush privileges;

# yum 安裝無需配置自啟
防火牆
# 關閉防火牆,否則sqlyog連線不上 報 2002 錯誤
[root@localhost mysql]# systemctl stop firewalld.service

# 禁用防火牆自啟動,重啟伺服器時,無需在關閉防火牆
[root@localhost mysql]# systemctl disable firewalld.service
檢視 mysql 版本
# 檢視 mysql 命令
[root@localhost mysql]# mysql --version
mysql  Ver 14.14 Distrib 5.7.33, for linux-glibc2.12 (x86_64) using  EditLine wrapper
安裝完畢!

3.2. 解除安裝

# 檢視是否安裝了mysql
[root@localhost local]# pm -qa|grep mysql
mysql-community-client-5.7.34-1.el7.x86_64
mysql-community-common-5.7.34-1.el7.x86_64
mysql-community-devel-5.7.34-1.el7.x86_64
mysql-community-libs-5.7.34-1.el7.x86_64
mysql80-community-release-el7-3.noarch
mysql-community-server-5.7.34-1.el7.x86_64

# 停止mysql的服務
[root@localhost local]# systemctl stop mysqld.service

# 解除安裝 mysql,但 mysql80-community-release-el7-3.noarch 是mysql源,無需解除安裝,後續使用到 yum 安裝,就需要它的源進行操作
[root@localhost local]# yum -y remove mysql-community-client-5.7.34-1.el7.x86_64 mysql-community-common-5.7.34-1.el7.x86_64 mysql-community-devel-5.7.34-1.el7.x86_64mysql-community-libs-5.7.34-1.el7.x86_64 mysql-community-server-5.7.34-1.el7.x86_64

# 檢視是否還有mysql遺留資料
# 資料庫目錄 /var/lib/mysql
# 配置檔案 /usr/share/mysql(mysql.server命令及配置檔案)
# 相關命令 /usr/bin (mysqladmin mysqldump等命令)
[root@localhost local]# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql

# 將上面顯示的資料夾一一刪除
[root@localhost local]# rm -rf /var/lib/mysql/
[root@localhost local]# rm -rf /usr/share/mysql

# 綜上步驟,可以將 mysql 徹底刪除乾淨
說明
# rpm 安裝適用於手殘黨,安裝位置固定,環境變數無需配置
# tar 安裝比較自由,隨意安裝在哪裡,只需在環境配置檔案,配置mysql的安裝位置資訊等即可!
# yum 安裝使用多個版本資源,直接聯網安裝下載
# yum 和 rpm 都多了密碼規則的修改,其他沒什麼變化
# 綜上都可以安裝好mysql環境,編寫不易,轉載請標明出處
從入門到崩潰