CentOS 7安裝 MySQL5.7


一:CentOS 7使用RPM安裝MySQL5.7

學到了在CentOS里安裝MySQL5.7,那你肯定對MySQL有個基本的使用,所以我廢話少說直接干貨!!

1:下載MySQL5.7的rpm安裝包

 下載地址  選擇合適的版本,這里我們使用的是MySQL5.7.33;下載完成后發送到自己的CentOS7服務器里,這里可以通過命令:rz -y來上傳,或者Xftp

2:卸載已安裝的MySQL(沒安裝過則跳過)

注:卸載之前請關閉mysql服務,命令:

systemctl stop mysqld

按照順序卸載:

rpm -e --nodeps mysql-community-server
rpm -e --nodeps mysql-community-client
rpm -e --nodeps mysql-community-libs
rpm -e --nodeps mysql-community-common

卸載完基本的環境后,我們要清理依賴的文件(數據庫配置文件及數據庫數據文件)

-- 刪除數據庫配置文件(一般情況下卸載了mysql這個文件也會被自動刪除)
    rm -rf  /etc/my.cnf
-- 刪除數據庫數據文件(包含系統數據庫表和自定義數據庫表)
    rm -rf /var/lib/mysql
-- 刪除日志臨時文件(比如安裝后產生密碼的文件,不刪除會發現安裝后查詢2個初始密碼,但以下面的為主)
    rm -rf /var/log/mysqld.log

3:MySQL安裝環境准備

  • 卸載mariadb:檢查是否安裝了mariadb(CentOS7默認安裝),如存在則卸載mariadb;如果你是CentOS6,則默認是MySQL,那么你就卸載MySQL即可。
  • 說明:以前的Linux系統中數據庫大部分是MySQL,不過自從被 sun 收購之后,就沒用集成在centos這些開源Linux系統中了,那么如果想用的話就需要自己安裝了,首先centos7 已經不在默認提供 MySQL,因為收費了你懂得,所以內部集成了mariadb,而安裝 MySQL 的話會和mariadb的文件沖突,所以需要先卸載掉mariadb。

rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
  • 安裝所需依賴:一般都是最新版了,以防萬一后面安裝出錯,缺少依賴。
yum install libaio -y
yum install net-tools -y

4:安裝我們上傳的四個MySQL包並啟動

  • 安裝時必須嚴格遵守安裝順序 依賴關系依次為 common → libs → client → server
  • 注:ivh中, i-install安裝;v-verbose進度條;h-hash哈希校驗

 

rpm -ivh mysql-community-common-5.7.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.33-1.el7.x86_64.rpm 
rpm -ivh mysql-community-client-5.7.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.33-1.el7.x86_64.rpm
# 安裝后查詢安裝的MySQL版本
mysqladmin --version
  • 啟動及查詢狀態 
# 查詢MySQL在系統的狀態
[root@VM-8-15-centos ~]# systemctl status mysqld
# 啟動MySQL數據庫
[root@VM-8-15-centos ~]# systemctl start mysqld
# 關閉MySQL數據庫
[root@VM-8-15-centos ~]# systemctl stop mysqld
# 重啟MySQL數據庫
[root@VM-8-15-centos ~]# systemctl restart mysqld
# 查看MySQL進程
[root@VM-8-15-centos ~]# ps -ef | grep mysql

5:登錄安裝的MySQL5.7

  • 由於MySQL5.7.4之前的版本中默認是沒有密碼的,登錄后直接回車就可以進入數據庫,從而在里面進行設置密碼等操作。其后版本對密碼等安全相關操作進行了一些改變,在安裝過程中,會在安裝日志中生成一個臨時密碼
  • 獲取數據庫臨時密碼:grep 'temporary password' /var/log/mysqld.log

 

  •  更改密碼:初始化密碼只是提供給你登錄到內部,而我們進入到內部必須修改密碼,否則無法對數據庫操作,就如下圖我們無法操作 
# new_password替換成自己的密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

什么??不符合策略,這里告訴你,密碼為8位並且包含特殊字符、大小寫字母、數字

如: ALTER USER 'root'@'localhost' IDENTIFIED BY  'aaAA$$!!66' ;

mysql>  show variables like 'validate_password%';  
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |  是否驗證用戶名
| validate_password_dictionary_file    |        |  密碼策略文件,策略為STRONG才需要
| 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並且長度設置為3)

set global validate_password_policy=0;       # 關閉密碼復雜性策略(LOW)
set global validate_password_length=3;       # 設置密碼復雜性要求密碼最低長度為3

select @@validate_password_policy;        # 查看密碼復雜性策略
select @@validate_password_length;        # 查看密碼復雜性要求密碼最低長度大小

show variables like 'validate_password%';   # 查詢具體策略
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+

終於可以設置靈魂密碼了 : mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';(建議不要設置成這樣!!!)

6:創建用戶並授權

MySQL中的用戶賬戶由用戶名和主機部分組成,要創建MySQL賬戶語法如下

基本創建:
    語法:mysql> CREATE USER '用戶名'@'localhost' IDENTIFIED BY '密碼';
    # '用戶名'@'localhost' 其中localhost代表設置只能從localhost本機連接到MySQL服務器,無法遠程

    語法:mysql> CREATE USER '用戶名ser'@'119.28.68.52' IDENTIFIED BY '密碼';
    # '用戶名'@'119.28.68.52' 只能從IP 119.28.68.52 的計算機授予(遠程)訪問權限

    語法:mysql> CREATE USER '用戶名'@'%' IDENTIFIED BY '密碼';
    # '用戶名'@'%' 可以從任何主機連接到MySQL

用戶賬戶權限設置:
    ALL PRIVILEGES  - 授予用戶帳戶的所有權限。
    CREATE          - 允許用戶帳戶創建數據庫和表。
    DROP            - 允許用戶帳戶刪除數據庫和表。
    DELETE          - 允許用戶帳戶從特定表中刪除行。
    INSERT          - 允許用戶帳戶將行插入特定表。
    SELECT          - 允許用戶帳戶讀取數據庫。
    UPDATE          - 允許用戶帳戶更新表行。
    語法:mysql> GRANT ALL 權限1,權限2,... ON 分配權限的數據庫名稱 . * TO '用戶名'@'%';

一些示例如下:
    對特定數據庫上的用戶帳戶授予所有權限:
        GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
    為所有數據庫上的用戶帳戶授予所有權限:
        GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
    通過數據庫中的特定表格對用戶帳戶的所有權限:
        GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
    通過特定數據庫為用戶帳戶授予多個權限:
        GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
        
顯示MySQL用戶帳戶權限
    要查找授予特定MySQL用戶帳戶的權限,請使用SHOW GRANTS語句:
    SHOW GRANTS FOR '用戶名'@'localhost';
# 首先我創建一個數據庫,為了給用戶分配上權限
CREATE DATABASE IF NOT EXISTS chemical_safety DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
# 創建用戶
CREATE USER 'chemical'@'%' IDENTIFIED BY 'aaAA$$!!66';           # 可遠程訪問權限
CREATE USER 'jack'@'localhost' IDENTIFIED BY '54088';   # 本地訪問的權限
# 分配school表給用戶jack最大權限
GRANT ALL PRIVILEGES ON chemical_safety.* TO 'chemical'@'%';
# 刷新配置
flush privileges;

  •  撤銷MySQL用戶上的權限:用戶帳戶撤消一個或多個權限的語法與授予權限時幾乎相同。如要通過特定數據庫撤消用戶帳戶的所有權限,請使用以下命令
REVOKE ALL PRIVILEGES ON school.* FROM 'jack'@'%';
  • 刪除MySQL用戶賬戶
DROP USER 'jack'@'%';

7:修改my.cnf配置文件

這個配置比較通用,適合中小企業

[mysqld]

#默認
port=3306

#數據目錄
datadir=/var/lib/mysql

#該條配置需在[client]段同時配置
socket=/var/lib/mysql/mysql.sock

#多客戶訪問同一數據庫,該選項默認開啟
symbolic-links=0

#默認
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#打開時,和max_connections對比,取大數
open_files_limit=65535

#開啟慢查詢日志相關,默認10秒,慢查詢日志路徑,記錄沒有使用索引的sql
slow_query_log=on
long_query_time=10
slow_query_log_file=/var/log/mysql/slow_query.log
log-queries-not-using-indexes=1

#InnoDB為獨立表空間模式,每個數據庫的每個表都會生成一個數據空間
default_storage_engine=InnoDB
innodb_file_per_table=on

#生產中要改,建議為操作系統內存的70%-80%,需重啟服務生效
innodb_buffer_pool_size=1G

#忽略主機名解析,提高訪問速度(注意配置文件中使用主機名將不能解析)
skip_name_resolve=on

#忽略表單大小寫
lower_case_table_names=0

#設定默認字符為utf8mb4
character-set-server=utf8mb4

#SQL_MODEL
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服務

systemctl restart mysqld

免責聲明:
    本文轉自網絡文章,轉載此文章僅為個人收藏,分享知識,如有侵權,請聯系 博主進行刪除。
安裝步驟參考原文地址: html地址
本文新增my.cnf配置文件

DROP USER 'jack'@'%';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM