采用二進制方式免編譯安裝MySQL,適合各類MySQL產品系列,不需要復雜的編譯設置和編譯時間等待,直接解壓下載的軟件包,初始化即可完成MySQL的安裝和啟動.
1、准備工作
-
依賴環境
-
關閉防火牆
systemctl stop firewalld.service
-
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
下載:
cd /data/soft/
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar
tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar
tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
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
-
新建用戶組和用戶
cd /data/important-software/mysql/mysql-base/
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
-
初始化MySQL
在初始化之前,必須將新的my.cnf配置完成,以及將系統自動重啟文件進行修改。
- 配置文件
- 刪除etc下的my.cnf
rm /etc/my.cnf
- 將准備好的配置文件(下文最下方)放至目錄
/data/important-software/mysql/mysql-base/etc/
- 將配置文件進行軟鏈接到目錄/etc下;
ln -s /data/important-software/mysql/mysql-base/etc/my.cnf /etc/my.cnf
- 自啟動文件
- 復制自啟動文件到系統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連接,需要進一步配置。

`/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 '輸入的密碼';`