那天心血來潮想要把數據庫部署在身邊的另外一台linux計算機的mysql中,但是發現一切配置都沒有問題就是鏈接不上mysql,返回錯誤說權限不足,連接被禁止。
沒辦法,去google大神上找答案吧。才發現mysql的數據庫在linux主機中默認是不支持遠程鏈接的。
發現就是一句話的事情,我們需要一個授權:
grant ALL PRIVILEGES ON *.* to root@"%" identified by "密碼";
雖然沒剛開始接觸數據庫,但是英文已經學了很久了,這句話的意思是把所有操作權限賦予root這個用戶@‘%’的意思就是在任意一個ip上都適用。
原來這個對應的是修改系統mysql.user表中的數據,可以對比的看一下執行前後的表內容的改變。
對於linux用戶 還可能需要修改/etc/mysql/my.cnf
將以下行注釋掉或該為本機的真實ip地址,對於經常更改ip的機器建議還是直接注釋比較方便,但是對於這兩種方法的區別,本人還是不甚了了,希望知道的朋友告之。
#bind-address = 127.0.0.1
好不容易折騰半天用navicat鏈接到了mysql 打開一看中文全是亂碼,意識到肯定是編碼方式問題,在navicat的鏈接屬性中設置成utf8就好了。
後來查了,在linux中mysql的默認編碼是utf8,這與linux是一致的。在win系統中如果不做更改,mysql將使用latin1,一般安裝時會改成GBK
光用navicat鏈接成功不是重點,還需要在java中實現遠程鏈接。
我使用jdbc方法鏈接mysql數據庫
在驅動中指定使用編碼為真並使用字符編碼utf8
代碼如下
ct = DriverManager.getConnection("jdbc:mysql://localhost:3306/bbs?user=root&password=asdasd&useUnicode=true&characterEncoding=utf8");
文中的方法不能算是原創,均是已經使用的非常廣泛的用法,寫作的目的僅是為了對開發中的重點部分加以記錄。還希望大家多多指摘
本文出自 “摺扇一路走來” 博客