新聞中心
MySQL安裝完成后出現(xiàn)最多的問題是程序無法連接到數(shù)據(jù)庫(kù)「Access denied」,網(wǎng)上的帖子很多,大多是教你如何調(diào)整配置以實(shí)現(xiàn)連接,然而并沒有真正告訴你為什么會(huì)出現(xiàn)該問題,這里總結(jié)一下,希望可以幫助大家盡快解決問題。前提是你要連接的MySQL數(shù)據(jù)庫(kù)沒有ip地址、端口、防火墻設(shè)置等網(wǎng)路方面的問題。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、順平網(wǎng)站維護(hù)、網(wǎng)站推廣。
部分開發(fā)者「本人也是其中之一,哈哈」使用root用戶直接連接MySQL,強(qiáng)烈不推薦,因?yàn)镸ySQL的root用戶是管理數(shù)據(jù)庫(kù)用的,應(yīng)用程序通過root連接數(shù)據(jù)庫(kù)非常非常不安全,甚至破壞了MySQL的賬戶安全體系,尤其是生產(chǎn)環(huán)境,DBA絕對(duì)不會(huì)讓你這么干的。
只要Access denied是由于賬戶權(quán)限問題導(dǎo)致的,一般推薦的***實(shí)踐步驟如下,遵從這些步驟,你既可以了解到整個(gè)MySQL的賬戶權(quán)限體系,同時(shí)又不再可能遇到MySQL Access denied for user...這個(gè)問題。
MySQL添加數(shù)據(jù)庫(kù)并配置用戶和權(quán)限的***實(shí)踐樣例
一、以root用戶身份連接到MySQL服務(wù)器,如果已為root帳戶分配了密碼,則還必須提供-p選項(xiàng)。
- //以root用戶身份登錄到MySQL服務(wù)
- shell> mysql -u root -p
- //與上面命令功能一致,只是默認(rèn)選中了mysql這個(gè)庫(kù)
- shell> mysql -u root -p mysql
二、創(chuàng)建一個(gè)測(cè)試數(shù)據(jù)庫(kù)mytest
- mysql> create database mytest character set 'utf8' collate 'utf8_general_ci';
知識(shí)拓展:顯示已有庫(kù)
- mysql> show databases;
三、以root身份連接到服務(wù)器,添加新帳戶
- //創(chuàng)建一個(gè)主機(jī)名限制為localhost密碼是mypass的jeffrey用戶
- mysql> create user 'jeffrey'@'localhost' identified by 'mypass';
帳戶的主機(jī)名部分(如果省略)默認(rèn)為“%”。%表示所有主機(jī)都可以通過當(dāng)前的賬戶訪問數(shù)據(jù)庫(kù)。
知識(shí)拓展:對(duì)賬戶進(jìn)行查詢、修改、刪除等操作
- //查看已有賬戶
- mysql> select user,host from mysql.user;
- //可根據(jù)需要修改賬戶密碼,注意區(qū)分版本
- //從MySQL 5.7.6開始,使用alter user語(yǔ)法修改密碼
- mysql> alter user 'jeffrey'@'localhost' identified by 'new_password';
- //在5.7.6之前,使用set password語(yǔ)法修改密碼
- mysql> set password for 'jeffrey'@'localhost' = password('new_password');
- //重命名賬戶
- mysql> rename user 'jeffrey'@'localhost' to 'jeff'@'127.0.0.1';
- //刪除賬戶
- mysql> drop user 'jeffrey'@'localhost';
四、對(duì)賬戶賦權(quán)
- //針對(duì)mytest庫(kù)的所有操作權(quán)限分配給'jeffrey'@'localhost'賬戶
- mysql>grant all on mytest.* to 'jeffrey'@'localhost';
- //針對(duì)db2庫(kù)的invoice對(duì)象的select權(quán)限分配給'jeffrey'@'localhost'賬戶,并允許該賬戶可繼續(xù)下發(fā)權(quán)限
- mysql> grant select on db2.invoice to 'jeffrey'@'localhost' with grant option;
- 知識(shí)拓展:移除、查看已經(jīng)設(shè)置的權(quán)限
- //移除權(quán)限
- mysql> revoke all privileges on *.* from 'jeffrey'@'localhost';
- mysql> revoke select on db2.invoice from 'jeffrey'@'localhost';
- //顯示root權(quán)限
- mysql> show grants for 'root'@'localhost';
- //要顯示授予您用于連接到服務(wù)器的帳戶的權(quán)限,可以使用以下任何語(yǔ)句:
- mysql> show grants;
- mysql> show grants for current_user;
- mysql> show grants for current_user();
五、刷新權(quán)限,立即生效
- mysql> flush privileges;
六、連接測(cè)試
- //這里給出jdbc連接mysql的字符串,方便驗(yàn)證
- jdbc:mysql://ip:3306/mytest?useUnicode=true&characterEncoding=utf8
總結(jié)
通過上面的操作步驟,相信您已經(jīng)對(duì)整個(gè)MySQL的賬戶權(quán)限管理體系有個(gè)很清楚的認(rèn)識(shí),如果出現(xiàn)MySQL Access denied for user...問題只需要按照上面的步驟排查一下即可***解決。
之所以,這么多的開發(fā)者遇到MySQL Access denied for user...問題,主要的原因有三:一是因?yàn)橹苯邮褂胷oot連接,默認(rèn)root只能本地連接,遠(yuǎn)程連接自然失敗;二是因?yàn)橘~戶與權(quán)限設(shè)置不正確;三是根本不了解MySQL賬戶權(quán)限管理的一般步驟「大部分屬于這種情況」。
【本文為專欄作者“朱國(guó)立”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過作者微信公眾號(hào)“開發(fā)者圓桌”獲取聯(lián)系和授權(quán)】
戳這里,看該作者更多好文
網(wǎng)頁(yè)題目:MySQLaccessdeniedforuser...
網(wǎng)站網(wǎng)址:http://m.fisionsoft.com.cn/article/cohcpsc.html


咨詢
建站咨詢
