1. 程式人生 > >Centos7升級mysql5.7

Centos7升級mysql5.7

  1. 因為用的是nginx , 所以先關閉nginx : service nginx stop

  2. 解除安裝Mysql5.6 ,一共有三個包 要解除安裝:

  3. (1)先解除安裝mysql-server包 : 執行命令 yum remove mysql mysql-server

    (2)再解除安裝mysql-client包 : 執行命令 yum remove msyql-client

    (3)最後解除安裝mysql-devel : 執行命令 yum remove msyql-devel

    三個包都順利解除安裝完成以後,繼續執行安裝Mysql-5.7的命令

  4. 安裝Mysql-5.7版本

    (1)新增MySQL5.7的YUM源,建議安裝epel源

     # yum install epel-release
    

    (2)啟用MySQL5.7源

     # yum-config-manager --disable mysql56-community 
     # yum-config-manager --enable mysql57-community-dmr
    

    (3)如果系統裡面沒有yum-config-manage命令,執行如下命令進行安裝。

     # yum install yum-utils
    

    (4)執行安裝MySQL5.7

     # yum install mysql mysql-devel mysql-server mysql-utilities
    

    (5)初始化密碼,由於我沒有在/root目錄下找到第一次啟動的隨機密碼,我就使用瞭如下操作

     # vim /etc/my.cnf
     在mysqld欄位中新增
     [mysqld]
     skip-grant-tables
     然後執行        
     # systemctl restart mysqld
    

    此時直接敲mysql進入mysql的終端執行如下命令

    #use msyql;
    update user set authentication_string=password(123456) where user=‘root’ and Host = ‘localhost’;
    此時重啟mysql後,註釋掉剛剛新增的那個欄位,systemctl restart mysqld  會告訴你的密碼不符合複雜程度要求,需要再次更改;
    然後用123456這個密碼進入mysql終端,在此執行如下命令
    SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘
    [email protected]
    ’); FLUSH PRIVILEGES; 之後用新的密碼登入即可

    (6)修改預設字符集為UTF-8

     [mysqld]
     character-set-server=utf8
    

    (7)由於預設的密碼策略要求必須符合複雜程度,這是因為MySQL5.7以後引入了密碼策略外掛

             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      |
             ±-------------------------------------±-------+
    
    
             mysql> show plugins;
             | ngram                      | ACTIVE   | FTPARSER           | NULL                 | GPL     |
             | validate_password          | ACTIVE   | VALIDATE PASSWORD  | validate_password.so | GPL     |
             由於本人使用覺得很不方便,可以在配置檔案中新增如下欄位將其關閉!當然這也做是很不理智的,畢竟安全大於一切!
             #關閉密碼複雜策略
             validate_password=off
    

(8):完整的MySQL配置優化後的配置檔案如下

        [mysqld]
        #修改最大連線數
        max_connections = 500
        #設定預設字符集為utf8
        character-set-server=utf8
        #查詢排序時緩衝區大小,只對order by和group by起作用,可增大此值為16M
        sort_buffer_size = 16M
        #查詢快取限制,只有1M以下查詢結果才會被快取,以免結果資料較大把快取池覆蓋
        query_cache_limit = 1M
        #檢視緩衝區大小,用於快取SELECT查詢結果,下一次有同樣SELECT查詢將直接從快取池返回結果,可適當成倍增加此值
        query_cache_size = 16M
        #給所有的查詢做cache,代表使用緩衝
        query_cache_type = 1
        #設定以順序掃描的方式掃描表資料的時候使用緩衝區的大小
        read_buffer_size = 8M
        #開啟檔案數限制
        open_files_limit = 10240
        #修改InnoDB為獨立表空間模式,每個資料庫的每個表都會生成一個數據空間
        innodb_file_per_table = 1
        #索引和資料緩衝區大小,一般設定實體記憶體的60%-70%
        innodb_buffer_pool_size = 1G
        #緩衝池例項個數,推薦設定4個或8個
        innodb_buffer_pool_instances = 8
        #2代表只把日誌寫入到系統快取區,再每秒同步到磁碟,效率很高
        innodb_flush_log_at_trx_commit = 2
        #日誌緩衝區大小,由於日誌最長每秒鐘重新整理一次,所以一般不用超過16M
        innodb_log_buffer_size = 8M
        #back_log引數的值指出在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆疊中
        back_log = 1024
        #thread cache 池中存放的最大連線數
        thread_cache_size = 64
        #開啟慢查詢日誌
        slow_query_log = ON
        #關閉密碼複雜策略
        validate_password=off

至此,更新就完成了 ,不過 登入mysql時可能會出現如下報錯

‘Table performance_schema.session_variables doesn’t exist’

解決方法如下 :

mysql_upgrade -u root -p --force

然後 重啟mysql即可