記錄一次坑爹的操作。很久很久前,安裝mysql很順利,於是乎,順着經驗,在mysql8.0上撞了大坑,只能怪,經驗太舊太舊了,至此更新如下:
linux安裝mysql,最新版8.0:
1、首先,檢測是否已安裝:
rpm -qa | grep mysql
刪除已安裝的mysql:
rpm -e --nodeps mysql或rm -rf xxx
2、安裝,登陸mysql官網,下載對應版本的YUM資源包。
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update yum install mysql-server
初始化,
mysqld --initialize
啟動,
systemctl start mysqld
停止,
systemctl stop mysqld
重啟,
systemctl restart mysqld
3、填坑
1)、啟動后會提示:
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
遇到這種錯誤,第一反應,根據提示,執行
systemctl status mysqld.service或journalctl -xe命令,
查看信息,結果得到的與想要的,相差甚遠:
給的提示,最終指向Error: 13 (Permission denied)。。。Failed to start MySQL Server.
沒什么卵用,於是乎,查看mysql錯誤日志:
執行c
查看日志后得知,mysqld.pid沒有寫入權限,采取以下方式解決:
chown -R mysql:mysql /var/run/mysqld
再次啟動,成功!
2)、給root用戶設置密碼
按照以前的經驗,一頓操作猛如虎,定睛看,root密碼仍是處!(過時經驗,不再贅述)
悔當初,沒仔細看官網文檔,於是乎,翻閱官方,得到如下方式:
執行以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log
得到mysql安裝啟動時,提供得臨時密碼xxx
通過臨時密碼,執行shell> mysql -uroot -p,輸入臨時密碼,登陸mysql成功
執行以下命令:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxx';
設置新密碼成功!
注:新密碼遵循mysql的密碼策略。密碼策略validate_password
要求密碼包含至少一個大寫字母,一個小寫字母,一個數字和一個特殊字符,並且總密碼長度至少為8個字符
3)、開啟遠程訪問
修改mysql.user表中root對應的host,默認為localhost,改為%,匹配所有主機:
update user set `host` = '%' where `user` = 'root' LIMIT 1;
給root分配所有訪問權限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
開啟3306端口
使用navicat或navicat premium12連接mysql,報錯:
2059-Authentication plugin 'caching_sha2_password' cannot be loaded:
原因,mysql8.0使用的身份驗證插件為:caching_sha2_password,客戶端工具使用的身份驗證插件仍是mysql_native_password,解決:
修改mysql.user中的加密方式,
alter user 'root'@'%' identified with mysql_native_password by 'root密碼';
至此,mysql8.0填坑初步完成。