日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 6安装当前密码_MySQL8.0 安装踩坑指南

發(fā)布時(shí)間:2023/12/1 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 6安装当前密码_MySQL8.0 安装踩坑指南 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

就在昨天上午,剛為云服務(wù)器安裝好Apache2.4.33和PHP7.2.4環(huán)境,準(zhǔn)備再來一個(gè)最新的MySQL5.7.22。尋找5.7版本的rpm包時(shí)下到mysql80xxx.rpm,看人家的教程是mysql57,難道80是MySQL出出…出了8版,一搜新聞2個(gè)小時(shí)前MySQL發(fā)布了8.0.11正式穩(wěn)定版(GA)。我心里什么感覺

——?jiǎng)倓倻?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]

報(bào)錯(cuò):客戶端不知道服務(wù)器要求驗(yàn)證的規(guī)則[caching_sha2_password],

目標(biāo):在云服務(wù)器Linux和本地windows都上最新MySQL8.0.11,同時(shí)讓PHP7能連通用mysqli接口連通。

工具:PuTTY用于遠(yuǎn)程連接云服務(wù)器輸入命令;FileZilla Client監(jiān)控服務(wù)器的文件目錄,看看到底命令做了什么。

windows版

1、在官方下載MySQL ZIP壓縮版

https://dev.mysql.com/downloads/mysql/

2、解壓后放到任意一個(gè)你指定的目錄

例如: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 [啟動(dòng)MySQL服務(wù)]net start MySQL3380# 5 通過命令行,進(jìn)入mysql控制臺。默認(rèn)密碼為空,回車即可mysql -u root -p#--------------------------------------------# [卸載服務(wù)(未用到)]net stop MySQL3380sc delete MySQL3380

[上方指令動(dòng)圖演示.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下存在一個(gè)MySQL配置文件my.cnf(2016年11月顯然是系統(tǒng)自帶的),我們想知道在執(zhí)行mysql-server過程中,哪一步會(huì)生成或修改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/ 目錄下生成兩個(gè)文件:

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、啟動(dòng)mysqld服務(wù)并加入開機(jī)自啟動(dòng)

[root@codenight ~]# systemctl start mysqld.service[root@codenight ~]# systemctl enable mysqld.service

5、獲取臨時(shí)登錄密碼

[root@codenight ~]# grep 'temporary password' /var/log/mysqld.log

復(fù)制其中返回的密碼:

小提示:如果密碼死活不對,復(fù)制到記事本仔細(xì)核對。還不行的話只能用黑魔法(其實(shí)最大的可能還是密碼復(fù)制錯(cuò)了),去到/var/log/下載mysqld.log,找到里面的password修改自定義密碼上傳mysql.log并重啟MySQL服務(wù)

6、登錄數(shù)據(jù)庫輸入以上密碼

[root@codenight ~]# mysql -u root -p

執(zhí)行任意SQL語句都會(huì)提示錯(cuò)誤

mysql> SHOW DATABASES;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

[錯(cuò)誤1820] 提醒必須使用ALTER USER重置你的密碼

7、重置密碼

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements

[錯(cuò)誤 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表插入一個(gè)條適用于任何主機(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)錯(cuò)誤處理

例如密碼12345678,user表里的authentication_string字段必須存放根據(jù)?plugin字段指明的規(guī)則生成的密文,否則無論如何輸入都提示密碼錯(cuò)誤的

參考資料:

[官方]使用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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。