個人操做系統是ubuntu:html
個人MySQL版本是:mysql
安裝完成後,登陸mysql的時候就出現了以下錯誤:sql
由於安裝的過程當中沒讓設置密碼,可能密碼爲空,但不管如何都進不去mysql。那麼該怎麼作呢數據庫
在ubuntu的terminal(也即終端)上輸入ubuntu
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
進入到配置文件,而後在這個配置文件中的[mysqld]這一塊中加入skip-grant-tables這句話。 vim
做用:就是讓你能夠不用密碼登陸進去mysql。安全
保存:wq,退出。輸入:service mysql restart,從新啓動mysql。 服務器
在終端上輸入mysql -u root -p,碰見輸入密碼的提示直接回車便可,進入mysql網絡
而後分別執行下面四句話:socket
1 use mysql; 而後敲回車 2 update user set authentication_string=password("你的密碼") where user="root"; 而後敲回車 3 flush privileges; 而後敲回車
4 quit;
從新進入到mysqld.cnf文件中去把剛開始加的skip-grant-tables這條語句給註釋掉。
再返回終端輸入mysql -u root -p,應該就能夠進入數據庫了。
若是出現這個問題,仍是須要像上個問題同樣,先把MySQL設置成無密碼狀態,也就是把上個問題中的第三步註釋的
skip-grant-tables
這句話在去掉註釋,讓它從新起效,而且還要重啓MySQL服務
service mysql restart
起效後輸入下面這兩行命令
1、use mysql; 2、select user,plugin from user;
從圖中能夠看到在執行了select user,plugin from user;後,錯誤緣由是由於plugin root的字段是auth_socket,那咱們改掉它爲下面的mysql_native_password就好了。輸入:
update user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root';
而後回車執行如下,再輸入select user,plugin from user;回車,咱們能看到root用戶的字段改爲功了。
最後quit退出。再把 skip-grant-tables這句話註釋上
:
這個問題就解決了
問題分析:
一、多是網絡鏈接問題。
解決方案:若是能ping 192.168.100.109,能ping通,則排除此狀況。
2. 可能因爲192.168.100.109主機上的my.cnf裏配置了skip_networking。
若是配置了skip_networking,這就意味着MySQL只能經過本機Socket鏈接(socket鏈接也是本地鏈接的默認方式),放棄對TCP/IP的監聽 固然也不讓本地程序鏈接MySQL(Connector/只能經過TCP/IP來鏈接)。
解決方案:仍是使用命令 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 進入到mysqld.cnf文件中,若是有skip_networking,註釋掉就好了
三、可能因爲192.168.100.109主機上的my.cnf裏配置了bind_address=127.0.0.1,只容許本地socket鏈接
解決方案:也是使用命令 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 進入到mysqld.cnf文件中,若是有bind_address=127.0.0.1,註釋掉就好了
四、還有多是用戶名和密碼輸入錯誤
解決方案:從新輸入一下用戶名和密碼
五、還有多是port端口的問題
解決方案:有可能192.168.100.109的主機上的MySQL port不是默認3306, 這樣我遠程鏈接時,沒有指定--port,用的是3306, 而192.168.100.109上沒有對3306進行監聽。
出現access denied的緣由有以下可能:
一、若MySQL已經沒有啓動,重啓MySQL服務器便可
二、若用戶的端口號與IP(3306/3307)不一致:
三、要是mysql的配置文件錯誤,只須要將init文件中止,在重啓一下便可
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
四、還有就是密碼錯誤,從新輸入密碼試試
問題緣由:mysql服務器出於安全考慮,默認只容許本地登陸數據庫服務器。
問題解決:登入mysql後,更改 "mysql" 數據庫裏的 "user" 表裏的 "host" 項,從"localhost"改稱"%",而後重啓mysql這樣就容許全部的遠程機器進行訪問了。
mysql -u root -p mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>flush privileges; mysql>select host, user from user; mysql>quit
service mysql restart
這個問題就解決了