我的nacos布在本地虚拟机上,数据库装在本地,用的是MySQL。
启动的时候一直报错:No DataSource Set
百度了以下,说是数据库连接的超时时间太小了。
于是我调大了超时时间。
原配置: &connectTimeout=1000&socketTimeout=3000
修改后:&connectTimeout=10000&socketTimeout=30000
增加了十倍大小。
但是,很不幸,还是他娘的报错!
而且我用虚拟机ping了一下,本机的ip地址,发现可以ping的通。
真是奇怪,为啥数据库连不上了呢,为啥呢?
我抓耳挠腮,百思不得其解。
忽然灵光一闪,莫非是root用户没有开启远程登录权限 ?
扫描二维码关注公众号,回复:
13155565 查看本文章
抱着试试看的态度,我打开了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端口。