我的nacos布在本地虛擬機上,數據庫裝在本地,用的是MySQL。
啟動的時候一直報錯:No DataSource Set
百度了以下,說是數據庫連接的超時時間太小了。
於是我調大了超時時間。
原配置: &connectTimeout=1000&socketTimeout=3000
修改后:&connectTimeout=10000&socketTimeout=30000
增加了十倍大小。
但是,很不幸,還是他娘的報錯!
而且我用虛擬機ping了一下,本機的ip地址,發現可以ping的通。
真是奇怪,為啥數據庫連不上了呢,為啥呢?
我抓耳撓腮,百思不得其解。
忽然靈光一閃,莫非是root用戶沒有開啟遠程登錄權限 ?
抱着試試看的態度,我打開了root遠程登錄權限。
我裝的數據庫是MySQL8,所以給root用戶授權的語句,可以這樣寫
USE mysql; #一定要使用mysql表,因為授權只能在這個表里授權。
查看當前用戶的權限。
select host,user from user;
果不其然,root用戶只能在本地訪問。
修改root權限為,可以遠程登錄。
update user set host='%' where user='root';
刷新權限
flush privileges;
再次啟動nacos,問題得以解決
MySQL8以前的版本,給root用戶授權的語句,如下:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
All : 表示所有操作,比如select,update,insert等操作
*.* :表示所有庫的所有表(test.*則表示test庫的所有表)。
root :表示授權的用戶名。
% :表示可以從任意地方登錄,如改成192.168.0.999,則表示只能從ip地址為192.168.0.999的機器登錄
123456 :表示授權的用戶名的密碼。
備注
這個報錯信息,有可能是端口未開放遠程訪問導致的。
如果你是windows系統,可以參考以下鏈接,開放3306端口。