CentOS7 下安裝 Mysql8
一、下載Linux版Mysql8壓縮包
>> wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.12-el7-x86_64.tar
或者從官網下載mysql包
二、解壓縮Mysql8壓縮文件
1 >> rpm -qa | grep mysql -- 查看已有Mysql服務 2 3 >> rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 -- 卸載Centos自帶Mysql服務 4 5 >> tar -xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz -C /user/local -- 解壓
說明:解壓后我們發現在 /user/local/mysql-8.0.12-el7-x86_64/ 目錄下多出兩個壓縮文件,其中一個是名稱中包含TEST,一個不包含TEST,我們需要不包含TEST的壓縮文件,在此執行解壓命令即可!
三、創建my.cnf配置文件
>> mkdir /usr/local/mysql-8.0.12-el7-x86_64/data --創建目錄
>> vi /etc/my.cnf --添加如下內容:
[client] port=3306 socket=/tmp/mysql-8.0.12-el7-x86_64/mysql.sock [mysqld] skip-grant-tables port=3306 user=mysql socket=/tmp/mysql-8.0.12-el7-x86_64/mysql.sock basedir=/usr/local/mysql-8.0.12-el7-x86_64 datadir=/usr/local/mysql-8.0.12-el7-x86_64/data log-error=error.log
四、創建Mysql用戶及用戶組
>> groupadd mysql
>> useradd -g mysql mysql
五、創建臨時文件MySQL
>> mkdir /tmp/mysql -- 創建目錄
>> chown -R mysql:mysql /tmp/mysql -- 執行授權
六、初始化數據庫
>> cd /user/local/mysql-8.0.12-el7-x86_64 -- 進入MySQL主目錄
>> ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-8.0.12-el7-x86_64/ --datadir=/usr/local/mysql-8.0.12-el7-x86_64/data/ -- 執行初始化命令,如果沒有什么異常提示,即代表初始化成功
初始化成功后控制台會打印root賬號默認的密碼,記得記錄下來
七、啟動MySQL服務
>> cd /usr/local/mysql-8.0.12-el7-x86_64
>> ./support-files/mysql.server start -- 啟動Mysql服務命令
>> ./support-files/mysql.server restart -- 重啟Mysql服務命令 >> ./support-files/mysql.server stop -- 關閉MySQL服務命令
八、登錄Mysql服務
>> ./bin/mysql -uroot -p
此時,我們會發現登錄不了Mysql服務器,並報如下異常:
[root@localhost software]# ./bin/mysql -uroot -p Enter password:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
解決方法:通過命令
>> vi /etc/my.cnf
在 [mysqld] 節點中增加 skip-grant-tables 命令后重新登錄
九、下面演示正確修改root密碼的步驟
一、如果當前root用戶authentication_string字段下有內容,先將其設置為空,否則直接進行二步驟。
>> use mysql; >> update user set authentication_string='' where user='root'
下面直接演示正確修改root密碼的步驟:
二、使用ALTER修改root用戶密碼,方法為 ALTER user 'root'@'localhost' IDENTIFIED BY '新密碼'。 如下:
>> ALTER user 'root'@'localhost' IDENTIFIED BY 'root'
此處有兩點需要注意:
1、不需要flush privileges來刷新權限。
2、密碼要包含大寫字母,小寫字母,數字,特殊符號。
修改成功; 重新使用用戶名密碼登錄即可;
注意: 一定不要采取如下形式該密碼:
>> use mysql; >> update user set authentication_string="新密碼" where user="root";
這樣會給user表中root用戶的authentication_string字段下設置了newpassword值;
當再使用 ALTER USER 'root'@'localhost' IDENTIFITED BY 'newpassword'
時會報錯的;
因為authentication_string字段下只能是mysql加密后的41位字符串密碼;其他的會報格式錯誤;
*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE
***************************************************************************Warning*********************************************************************************************
Mysql8遠程無法訪問,譬如:在其他機器通過SqlYog連接的問題,可能是mysql8的密碼加密方式和可視化工具的加密方式不匹配,
該問題暫時還未解決!!!