mysql 6安装当前密码_MySQL8.0 安装踩坑指南
就在昨天上午,剛為云服務(wù)器安裝好Apache2.4.33和PHP7.2.4環(huán)境,準(zhǔn)備再來一個最新的MySQL5.7.22。尋找5.7版本的rpm包時下到mysql80xxx.rpm,看人家的教程是mysql57,難道80是MySQL出出…出了8版,一搜新聞2個小時前MySQL發(fā)布了8.0.11正式穩(wěn)定版(GA)。我心里什么感覺
——剛剛準(zhǔn)備起步就被超車
看到宣傳的2倍性能提高、諸多新特性,objk。那就來飆(踩)車(坑)吧,果斷放棄MySQL5.7直接上8。
MySQL8.0用到了新的密碼插件驗(yàn)證方式,5.7叫做mysql_native_password,8.0叫做caching_sha2_password,這種加密方式讓很多和MySQL連接的界面工具(如Navicat)或編程語言(如PHP)mysqli接口失效:
Error : The server requested authentication method unknown to the client [caching_sha2_password]
報錯:客戶端不知道服務(wù)器要求驗(yàn)證的規(guī)則[caching_sha2_password],
目標(biāo):在云服務(wù)器Linux和本地windows都上最新MySQL8.0.11,同時讓PHP7能連通用mysqli接口連通。
工具:PuTTY用于遠(yuǎn)程連接云服務(wù)器輸入命令;FileZilla Client監(jiān)控服務(wù)器的文件目錄,看看到底命令做了什么。
windows版
1、在官方下載MySQL ZIP壓縮版
https://dev.mysql.com/downloads/mysql/
2、解壓后放到任意一個你指定的目錄
例如:E:\myServer\mysql-8.0.11-winx64
新建自定義默認(rèn)配置文件my.ini內(nèi)容如下,根據(jù)實(shí)際存放地址修改路徑
[mysqld] # port 設(shè)置端口 ,若設(shè)置3306是默認(rèn)端口可生路# basedir 設(shè)置MySQL的安裝目錄 ?# datadir 設(shè)置MySQL數(shù)據(jù)庫的數(shù)據(jù)的存放目錄port = 3380basedir=E:\myServer\mysql-8.0.11-winx64\datadir=E:\myServer\mysql-8.0.11-winx64\data# mysql8.0.11 默認(rèn)值為caching_sha2_passworddefault_authentication_plugin=mysql_native_password[client]# cmd.exe MySQL命令行所用端口 與上方保持一致port = 3380# https://dev.mysql.com/doc/refman/8.0/en/connecting.html
3、以管理員身份進(jìn)入命令行cmd.exe執(zhí)行安裝和初始化
注意:以管理員身份執(zhí)行cmd.exe,輸入完一行指令按回車鍵執(zhí)行
語句解釋如下,默認(rèn)路徑為E:\myServer請根據(jù)實(shí)際修改# 1 [跳轉(zhuǎn)到MySQL主進(jìn)程mysqld目錄]E:cd E:\myServer\mysql-8.0.11-winx64\bin# 2 [加入windows服務(wù),自定義名字MySQL3380]mysqld -install MySQL3380#3 [初始化將生成數(shù)據(jù)存放文件夾data,生成無密碼root帳號]mysqld --initialize-insecure# 4 [啟動MySQL服務(wù)]net start MySQL3380# 5 通過命令行,進(jìn)入mysql控制臺。默認(rèn)密碼為空,回車即可mysql -u root -p#--------------------------------------------# [卸載服務(wù)(未用到)]net stop MySQL3380sc delete MySQL3380
[上方指令動圖演示.gif]
Linux版
環(huán)境為云服務(wù)器系統(tǒng)版本CentOS7.3,使用Yum Repository安裝
[root@codenight ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
發(fā)現(xiàn)系統(tǒng)目錄/etc下存在一個MySQL配置文件my.cnf(2016年11月顯然是系統(tǒng)自帶的),我們想知道在執(zhí)行mysql-server過程中,哪一步會生成或修改my.cnf,默認(rèn)存的內(nèi)容只有幾行
[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockassorted security riskssymbolic-links=0[mysqld_safe]log-error=/var/log/mariadb/mariadb.logpid-file=/var/run/mariadb/mariadb.pid!includedir /etc/my.cnf.d
1.下載MySQL8.0.11的.rpm文件
wget ?https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
這一步在服務(wù)器 /root 目錄下載文件mysql80-community-release-el7-1.noarch.rpm
2.安裝rpm包
rpm -ivh mysql80-community-release-el7-1.noarch.rpm --force --nodeps
這一步在 /etc/yum.repos.d/ 目錄下生成兩個文件:
mysql-community.repo
mysql-community-source.repo
3.安裝mysql-community-server
yum install mysql-community-server
彈出對話框確認(rèn)y,最終Complete! 這一命令安裝了很多
就是這一步生成了新的MySQL配置文件my.cnf,主要內(nèi)容如下,不必修改
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]# innodb_buffer_pool_size = 128M# log_bin# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M## 移除default_authentication_plugin前面的#, # 這樣就可以兼容老舊的客戶端了。有關(guān)內(nèi)容請看:# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin# default-authentication-plugin=mysql_native_passworddatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
4、啟動mysqld服務(wù)并加入開機(jī)自啟動
[root@codenight ~]# systemctl start mysqld.service[root@codenight ~]# systemctl enable mysqld.service
5、獲取臨時登錄密碼
[root@codenight ~]# grep 'temporary password' /var/log/mysqld.log
復(fù)制其中返回的密碼:
小提示:如果密碼死活不對,復(fù)制到記事本仔細(xì)核對。還不行的話只能用黑魔法(其實(shí)最大的可能還是密碼復(fù)制錯了),去到/var/log/下載mysqld.log,找到里面的password修改自定義密碼上傳mysql.log并重啟MySQL服務(wù)
6、登錄數(shù)據(jù)庫輸入以上密碼
[root@codenight ~]# mysql -u root -p
執(zhí)行任意SQL語句都會提示錯誤
mysql> SHOW DATABASES;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
[錯誤1820] 提醒必須使用ALTER USER重置你的密碼
7、重置密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements
[錯誤 1819]提示你的密碼不滿足當(dāng)前policy要求
原因是validate_password.policy的默認(rèn)值是1(中級強(qiáng)度),除了8位長度必須要含有數(shù)字、大小寫字母、特殊字符至少一種,例如3ONbm
https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html#sysvar_validate_password.policy
如果還是想用簡單8位密碼例如abc54321,降低policy的值
mysql> SET GLOBAL validate_password.policy=0;Query OK, 0 rows affected (0.00 sec)
現(xiàn)在密碼就改為12345678了
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';Query OK, 0 rows affected (0.04 sec)
8、開放遠(yuǎn)程連接
我們直接在user表插入一個條適用于任何主機(jī),登錄名為root密碼為12345678的記錄,刷新權(quán)限就可以遠(yuǎn)程登陸了,確認(rèn)服務(wù)器安全組或已放行3306端口。
USE mysql;INSERT INTO `user` VALUES ('%', 'root', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0', '0', 'mysql_native_password', '*84AAC12F54AB666ECFC2A83C676908C8BBC381B1', 'N', '2018-04-21 11:25:16', null, 'N', 'Y', 'Y', null, null);FLUSH PRIVILEGES;
看看用戶權(quán)限表里面用戶和密碼
mysql> ?SELECT host,user,plugin,authentication_string FROM mysql.user;+-----------+------------------+-----------------------+---------------------------------------------------------------------+| host ? ? ?| user ? ? ? ? ? ? | plugin ? ? ? ? ? ? ? ?| authentication_string ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+-----------+------------------+-----------------------+---------------------------------------------------------------------+| % ? ? ? ? | root ? ? ? ? ? ? | mysql_native_password | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1 ? ? ? ? ? ? ? ? ? ? ? ? ? || localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE ? ? ? ? ? ? ? ? ? ? ? ? ? || localhost | mysql.session ? ?| mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE ? ? ? ? ? ? ? ? ? ? ? ? ? || localhost | mysql.sys ? ? ? ?| mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE ? ? ? ? ? ? ? ? ? ? ? ? ? || localhost | root ? ? ? ? ? ? | caching_sha2_password | $A$005$0qyQJPnk>R5J>~}tGo2dCdahVKfz42pCUr/3tLWJYERvir2Mr5jUUkBR2B |+-----------+------------------+-----------------------+---------------------------------------------------------------------+5 rows in set
注:同樣的密碼12345678生成的密文string,第一行是native加密的結(jié)果,第五行是sha2加密的結(jié)果,服務(wù)器命令行使用的是host=localhost AND user=root,遠(yuǎn)程連接使用host=% AND user=root
9、優(yōu)雅降級
現(xiàn)在Navicat可以遠(yuǎn)程連接上了,PHP等編程語言調(diào)用的mysqli接口還不行,因?yàn)镸ySQL8.0.11 前天才發(fā)布正式版,這些程序接口都沒來得寫(PHP最新一版是3月30號),所以加密plugin需要設(shè)置為mysql_native
修改/etc/my.cnf,保存并重啟MySQL服務(wù)器
[root@codenight ~]# systemctl restart mysqld.service
10、其他相關(guān)錯誤處理
例如密碼12345678,user表里的authentication_string字段必須存放根據(jù)?plugin字段指明的規(guī)則生成的密文,否則無論如何輸入都提示密碼錯誤的
參考資料:
[官方]使用Yum Repository安裝MySQL:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html
CentOS7 通過YUM安裝MySQL5.7:https://www.cnblogs.com/jorzy/p/8455519.html
https://blog.csdn.net/wisdom_c_1010/article/details/55506081
總結(jié)
以上是生活随笔為你收集整理的mysql 6安装当前密码_MySQL8.0 安装踩坑指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《绍古辞》第一句是什么
- 下一篇: 投影机牌子排名,投影机牌子的十大是哪些?