更新至MySQL 5.7.9的詳細(xì)教程
更新至MySQL 5.7.9,聊一聊最近
MySQL 5.7.9 GA版本已經(jīng)出來,目前VPS已更新完成,雖說不像修正版本號(hào)更新一樣,直接把數(shù)據(jù)庫目錄移過去就好那么容易,但也不難。
這次更新了子版本號(hào),過程順利,沒坑,啟動(dòng)有告警。(我是從MySQL 5.6.27更新而來)
說說第一個(gè):
[Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
secure-file-priv這個(gè)參數(shù)主要是限制LOAD_FILE和LOAD DATA和SELECT … ,INTO OUTFILE報(bào)表到指定的目錄。
一般來說很少用,默認(rèn)值有empty、dirname、NULL,正確的意思就是:留空、指定路徑、NULL值。千萬不要以為是empty、指定路徑、NULL。。。empty會(huì)報(bào)錯(cuò)的哦,empty其實(shí)就是留空,會(huì)轉(zhuǎn)成默認(rèn)值,也就是platform-specific,我也不知道是什么東東。反正會(huì)如上提示。設(shè)置路徑會(huì)要求你該路徑其他系統(tǒng)用戶不能讀,而且不能獲取到你的MySQL數(shù)據(jù)庫目錄。NULL就是空,也是禁用的意思。
所以我在my.cnf中把secure-file-priv設(shè)置成NULL:
secure-file-priv = NULL
如此操作可以看到,現(xiàn)在提示:
[Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
直譯就是:[提示]--secure-file-priv被設(shè)置成NULL,有關(guān)數(shù)據(jù)導(dǎo)入導(dǎo)出操作被禁止。
這個(gè)不會(huì)影響mysqldump使用,放心好了。
第二項(xiàng)警告是:
[Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
在5.7中,通過ssl方式連接mysql被作為默認(rèn)和推薦。如果你并不需要(比如web端和db端同一臺(tái)服務(wù)器,db服務(wù)器處于web端內(nèi)網(wǎng)等),就可以不用使用ssl方式。
干掉警告很簡(jiǎn)單,只要在my.cnf聲明跳過ssl就行了。
skip-ssl
如此便OK了。
還有個(gè)警告。。。是:
[Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
[Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
[Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
[Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
[Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
如果一定要使用skip-name-resolve參數(shù),這個(gè)真心無解,在5.6中壓根不會(huì)報(bào)localhost的錯(cuò)。
如果你不喜歡這個(gè)提示,只能說,不要使用skip-name-resolve參數(shù)。
還要即便你有心去把localhost修改為127.0.0.1,很多應(yīng)用,比如wordpress這些默認(rèn)訪問localhost的應(yīng)用,都會(huì)不可用,需要更改host為127.0.0.1才行。
如果你只有單一的數(shù)據(jù)庫或應(yīng)用。那就可以通過修改localhost為127.0.0.1來解決。我線上數(shù)據(jù)庫和應(yīng)用太多就懶得改了。
要是你沒有遠(yuǎn)程訪問數(shù)據(jù)庫的話,只是在本地使用數(shù)據(jù)庫,推薦你用skip-networking而不是skip-name-resolve。skip-name-resolve參數(shù)它的功能主要是禁用DNS解析的,而skip-networking參數(shù)是設(shè)置MySQL不要監(jiān)聽網(wǎng)絡(luò),也就只能本機(jī)訪問。
還有一個(gè)大家看不出來,SQL Mode目前默認(rèn)值為:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
我的建議是把NO_ZERO_IN_DATE和NO_ZERO_DATE去掉,因?yàn)楫吘购芏喈a(chǎn)品(比如Wordpress)的默認(rèn)值就是0000-00-00 00:00:00,如果不去掉是不被允許的。當(dāng)然這個(gè),無傷大雅。
不去掉,如果出錯(cuò),MySQL會(huì)在查詢出現(xiàn)警告:
#1067 - Invalid default value for 'comment_date'
最后,說說大家最關(guān)心的,性能。我做了一些測(cè)試,感覺5.7.9比5.6.27還要慢。。。對(duì)的,你沒看錯(cuò),不如5.6.27快。。。好失望,我還是期待PHP7吧。
或許我該選擇MariaDB或是Percona Server。。。偏向后者,雖說前者可能性能更優(yōu),但后者更穩(wěn)定。前者我曾經(jīng)在其早期使用過,怎么說呢,很看人品的暴擊率。
聊聊最近發(fā)生在身邊的事情吧。
最近網(wǎng)易的事,很火。我用了網(wǎng)易郵箱10多年了,看了下帳號(hào)沒問題(帶安全碼)。
想了下,還是把帳號(hào)申訴下把密保改了,然后安全碼就沒了。。。
是不是以前帶安全碼的數(shù)據(jù)庫就沒有問題呢。。。后悔改密保了。。。
不過改了也就改了,安全點(diǎn)。
想人生第一個(gè)郵箱是雅虎中國(guó),然后同年馬上進(jìn)入了126的懷抱。如今雅虎中國(guó)郵箱已經(jīng)88,就剩126了。
當(dāng)年選擇126的原因,只是因?yàn)?26短、是數(shù)字、好記,特別是比起yahoo.com.cn好寫不少。。。
補(bǔ)充:管理員 修改MySQL 5.7.9 新版本的root密碼方法以及一些新變化整理
管理員 修改MySQL 5.7.9 新版本的root密碼方法以及一些新變化整理
MySQL 5.7版本開始,增強(qiáng)密碼驗(yàn)證機(jī)制,網(wǎng)上說安裝的時(shí)候會(huì)在/root/.mysql_secret 文件中生成默認(rèn)密碼,這一點(diǎn)自 5.7.6版本以后也去掉了。
針對(duì)如果生成默認(rèn)密碼,網(wǎng)上有一個(gè)版本,內(nèi)容如下:
1、修改配置文件,一般在 /etc/my.cnf, 在[mysqld]字段下增加skip-grant-tables 字段,用以忽略權(quán)限驗(yàn)證;
2、重啟MySQL服務(wù)器,CentOS 7.0操作命令是:
systemctl restart mysqld.service
3、使用mysql -u root -p 登錄數(shù)據(jù), 密碼直接回車;
4、修改mysql數(shù)據(jù)庫(名稱),user表的authentication_string字段,修改命令如下:
mysql> update mysql.user set authentication_string=password('new_password') where user='root' and Host ='localhost'; mysql> flush privileges; mysql> quit;
5、修改配置文件,去掉skip-grant-tables,恢復(fù)成原來的樣子, 然后重新MySQL服務(wù)器。
6、使用第4步設(shè)置的密碼,登錄mysql服務(wù)器。
7、通過 set password=password('new_password'); 命令重新設(shè)置密碼;
以上的方法,在MySQL 5.7早期版本時(shí),還是很好用的,但在MySQL 5.7.6以后的版本,最后一點(diǎn)重置密碼總是無法生效,會(huì)出來下面的錯(cuò)誤。
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
同時(shí),無法進(jìn)行其它的操作。
這是因?yàn)?,自MySQL 5.7開始,密碼存在有效期的概念, 同時(shí)因?yàn)榘踩燃?jí)的問題,需要使用使用其它的方式進(jìn)行設(shè)置。另一個(gè)需要注意的點(diǎn)是, 自5.7.6開始廢棄了password()函數(shù),同時(shí)無法設(shè)置old_password=1, 這真的是一件比較曲折的探索過程。
那么,先把MySQL 5.7.9版本以上的密碼設(shè)置方法整理一下。
大部分和上面整理的內(nèi)容相同,關(guān)鍵在第4步后,把a(bǔ)uthentication_string 里寫入的值記一下(這是因?yàn)閜assword()函數(shù)已廢棄)
通過使用以下命令,代替第7步的, set password=password('new_password') 方法。
mysql> ALTER USER 'jeffrey'@'localhost' -> IDENTIFIED WITH mysql_native_password -> AS 'authentication_string字段內(nèi)容'; Query OK, 0 rows affected (0.01 sec)
其實(shí)上面的命令有一個(gè)簡(jiǎn)化版本,命令如下
mysql> ALTER USER USER() IDENTIFIED BY 'news_password'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
之所以會(huì)出現(xiàn)上面的錯(cuò)誤信息,這和密碼的安全等級(jí)相關(guān),查看安全等級(jí)命令如下
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+
通過 SET GLOBAL validate_password_policy='LOW'; 命令,降低安全等級(jí)后,就可以直接使用,限制是必須8個(gè)字符以上;
關(guān)于安全等級(jí)更詳細(xì)的介紹如下
LOW
政策只測(cè)試密碼長(zhǎng)度。 密碼必須至少有8個(gè)字符長(zhǎng)。MEDIUM
政策的條件 密碼必須包含至少1數(shù)字字符,1 大寫和小寫字符,和1特別 (nonalphanumeric)字符。STRONG
政策的情況 密碼子字符串長(zhǎng)度為4的或更長(zhǎng)時(shí)間不能匹配 單詞在字典文件中,如果一個(gè)人被指定。
最后,為了解決密碼失效的問題, 最后在配置文件的[mysqld]字段下,增加以下字段
[mysqld] default_password_lifetime=0
也可以通過命令行進(jìn)行設(shè)置
ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER
關(guān)于密碼有效期相關(guān)的更多信息,可以參考 http://dev.mysql.com/doc/refman/5.7/en/password-expiration-policy.html
到此這篇關(guān)于更新至MySQL 5.7.9的詳細(xì)教程的文章就介紹到這了,更多相關(guān)更新到MySQL 5.7.9內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中Decimal類型和Float Double的區(qū)別(詳解)
下面小編就為大家?guī)硪黄狹ySQL中Decimal類型和Float Double的區(qū)別(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03Mysql 5.7.20壓縮版下載和安裝簡(jiǎn)易教程
這篇文章主要介紹了Mysql 5.7.20壓縮版下載和安裝簡(jiǎn)易教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11Windows XP系統(tǒng)安裝MySQL5.5.28圖解教程
很多朋友在winxp系統(tǒng)中開發(fā)php等,需要安裝mysql數(shù)據(jù)庫,這里簡(jiǎn)單介紹下,如何在xp下安裝mysql軟件,其實(shí)跟其它系統(tǒng)都差不多,主要是軟件對(duì)系統(tǒng)的兼容性2013-05-05mysql數(shù)據(jù)庫自動(dòng)添加創(chuàng)建時(shí)間及更新時(shí)間
在實(shí)際應(yīng)用中我們時(shí)常會(huì)需要用到創(chuàng)建時(shí)間和更新時(shí)間這兩個(gè)字段,下面這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫自動(dòng)添加創(chuàng)建時(shí)間及更新時(shí)間的相關(guān)資料,需要的朋友可以參考下2022-05-05使用mss2sql工具將SqlServer轉(zhuǎn)換為Mysql全記錄
上篇文章我們講訴了在mssql數(shù)據(jù)轉(zhuǎn)換成mysql數(shù)據(jù)中,用Navicat Premium導(dǎo)入數(shù)據(jù)很完美,但是創(chuàng)建表的時(shí)候數(shù)據(jù)類型轉(zhuǎn)換不是很完美,本文我們來講訴下用mss2sql工具來創(chuàng)建表,順便說下導(dǎo)入數(shù)據(jù)2014-08-08MySQL數(shù)據(jù)庫跨版本遷移的實(shí)現(xiàn)三種方式
本文主要介紹了MySQL數(shù)據(jù)庫跨版本遷移的實(shí)現(xiàn),主要包含mysqldump,物理文件遷移和原地升級(jí)三種,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05Mysql分片,大數(shù)據(jù)量時(shí)擴(kuò)容解決方案
這篇文章主要介紹了Mysql分片,大數(shù)據(jù)量時(shí)擴(kuò)容解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06