CentOS7.x安裝MySQL8.0.11二進制版本


社區版下載地址

采用二進制方式免編譯安裝MySQL,適合各類MySQL產品系列,不需要復雜的編譯設置和編譯時間等待,直接解壓下載的軟件包,初始化即可完成MySQL的安裝和啟動.

1、准備工作

  • 依賴環境

    1. 關閉防火牆
      systemctl stop firewalld.service

    2. MySQL依賴於libaio
      yum search libaio
      yum install libaio

  • 下載,解壓,重命名

    個人喜好將所有下載的軟件放至目錄 /data/soft/
    個人喜好將所有軟件安裝在目錄:/data/important-software/
    以上軟件和安裝目錄各新建目錄mysql;/data/soft/mysql /data/important-software/mysql/
    再到目錄/data/important-software/mysql/ 分別新建MySQL的主程序目錄和數據目錄
    主程序目錄:/data/important-software/mysql/mysql-base/
    數據目錄:/data/important-software/mysql/mysql-data
    配置文件目錄:/data/important-software/mysql/mysql-base/etc/
    PID目錄: /data/important-software/mysql/mysql-data/pid

    下載:

    1. cd /data/soft/
    2. wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar
    3. tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar
    4. tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
    5. cp -r /data/soft/mysql/mysql-8.0.11-linux-glibc2.12-x86_64/* /data/important-software/mysql/mysql-base/

    解壓目錄內容
    bin mysqld服務器,客戶端和實用程序
    data 日志文件,數據庫
    docs MySQL手冊信息格式
    man Unix手冊頁
    include 包含(標題)文件
    lib
    share 其他支持文件,包括錯誤消息,示例配置文件,用於數據庫安裝的SQL

2. 安裝MySQL

  • 新建用戶組和用戶

    1. cd /data/important-software/mysql/mysql-base/
    2. groupadd mysql
    3. useradd -r -g mysql -s /bin/false mysql
  • 初始化MySQL

    在初始化之前,必須將新的my.cnf配置完成,以及將系統自動重啟文件進行修改。

    • 配置文件
    1. 刪除etc下的my.cnf rm /etc/my.cnf
    2. 將准備好的配置文件(下文最下方)放至目錄 /data/important-software/mysql/mysql-base/etc/
    3. 將配置文件進行軟鏈接到目錄/etc下;ln -s /data/important-software/mysql/mysql-base/etc/my.cnf /etc/my.cnf
    • 自啟動文件
    1. 復制自啟動文件到系統init.d目錄:cp /data/important-software/mysql/mysql-base/support-files/mysql.server /etc/init.d/mysql.server

    將原來的:

basedir=
datadir=
```
    修改為:
```
basedir=/data/important-software/mysql/mysql-base
datadir=/data/important-software/mysql/mysql-data    
```
    3. 將原來的:
    ```
mysqld_pid_file_path=
if test -z "$basedir"
then
  basedir=/usr/local/mysql
  bindir=/usr/local/mysql/bin
  if test -z "$datadir"
  then
    datadir=/usr/local/mysql/data
  fi
  sbindir=/usr/local/mysql/bin
  libexecdir=/usr/local/mysql/bin
else
  bindir="$basedir/bin"
  if test -z "$datadir"
  then
    datadir="$basedir/data"
  fi
  sbindir="$basedir/sbin"
  libexecdir="$basedir/libexec"
fi
    ```
    修改為:

    ```
mysqld_pid_file_path=
if test -z "$basedir"
then
  basedir=/data/important-software/mysql/mysql-base
  bindir=/data/important-software/mysql/mysql-base/bin
  if test -z "$datadir"
  then
    datadir=/data/important-software/mysql/mysql-data
  fi
  sbindir=/data/important-software/mysql/mysql-base/bin
  libexecdir=/data/important-software/mysql/mysql-base/bin
else
  bindir="$basedir/bin"
  if test -z "$datadir"
  then
    datadir="$basedir/data"
  fi
  sbindir="$basedir/sbin"
  libexecdir="$basedir/libexec"
fi
    ```

    3. 初始化MySQL
    `/data/important-software/mysql/mysql-base/bin/mysqld --initialize --user=mysql --basedir=/data/important-software/mysql/mysql-base --datadir=/data/important-software/mysql/mysql-data`

***注意密碼***
    
    4. mysql臨時密碼
    
    > [注意]root@localhost生成臨時密碼:`;b;s;)/rn6A3`,也就是`root@localhost:`后的字符串
    > 示例
```
2017-08-26T03:23:35.368366Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-08-26T03:23:35.748679Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-08-26T03:23:35.793190Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-08-26T03:23:35.848286Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: f210c54b-8a0d-11e7-abbd-000c29129bb0.
2017-08-26T03:23:35.848889Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2017-08-26T03:23:35.849421Z 1 [Note] A temporary password is generated for root@localhost: ;b;s;)/rn6A3
```

    5. 生成RSA私鑰,可以跳過此步驟
    mysql_ssl_rsa_setup需要openssl支持,用於啟用數據量ssl連接,需要進一步配置。
    ![**參考MySQL使用SSL連接**](https://segmentfault.com/a/1190000007819751)
    
    `/data/important-software/mysql/mysql-base/bin/mysql_ssl_rsa_setup`

    6. 對之前創建的MySQL主程序目錄和數據目錄授權

    1. `chown -Rf mysql.mysql /data/important-software/mysql`
    2. `chmod 750 /data/important-software/mysql`
    
## 3. 啟動MySQL服務
    **啟動腳本有兩個分別是:**
    `/data/important-software/mysql/mysql-base/bin/mysqld_safe`
    `/etc/init.d/mysqld`
    1. 啟動方式一
    `/data/important-software/mysql/mysql-base/bin/mysqld_safe --user=mysql &`
    
    2. 啟動方式二
    `service mysql.server start` 或者 `/etc/init.d/mysqld start`

## 設置MySQL密碼

    登陸成功后,設置MySQL密碼
    `ALTER USER 'root'@'localhost' identified by '輸入的密碼;` 或 `set password=password("輸入的密碼");`
    刷新權限
    `flush privileges;`

    在MySQL安裝目錄的 bin 目錄下執行命令:

    mysql -u root -p
      這時候會提示輸入密碼,記住了上面第1.3步安裝時的密碼,填入即可登錄成功,進入MySQL命令模式。

    在MySQL8.0.4以前,執行

    `SET PASSWORD=PASSWORD('[修改的密碼]');` 就可以更改密碼,
    ***但是MySQL8.0.4開始,這樣默認是不行的。因為之前,MySQL的密碼認證插件是“mysql_native_password”,而現在使用的是“caching_sha2_password”。***
  因為當前有很多數據庫工具和鏈接包都不支持“caching_sha2_password”,為了方便,我暫時還是改回了“mysql_native_password”認證插件。
    修改用戶密碼,在MySQL中執行命令:
    `ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';`
    修改密碼驗證插件,同時修改密碼。
  如果想默認使用“mysql_native_password”插件認證,可以在配置文件中配置default_authentication_plugin項。[下面的my.cnf已修改好了]

    [mysqld]
    default_authentication_plugin=mysql_native_password
    
## mysql8創建遠程連接賬戶

mysql8和原來的版本有點不一樣,8的安全級別更高,所以在創建遠程連接用戶的時候,

不能用原來的命令(同時創建用戶和賦權):

mysql>grant all PRIVILEGES on *.* to test@'localhost' identified  by '123456';


***必須先創建用戶***

>(密碼規則:mysql8.0以上密碼策略限制必須要大小寫加數字特殊符號):

`create user '輸入的用戶'@'%' identified  by '輸入的密碼;`

***再進行賦值:***

`grant all privileges on *.* to '輸入的用戶'@'%' with grant option;`

***最后刷新一下:***

`flush privileges;`

當你進行遠程連接是,會出現這樣的錯誤:

Unable to load authentication plugin 'caching_sha2_password'.

是因為mysql8使用的是caching_sha2_password加密規則,最簡單的方法是修改遠程連接用戶的加密規則:

`ALTER USER '輸入的用戶'@'%' IDENTIFIED WITH mysql_native_password BY '輸入的密碼';`


免責聲明!

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



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