[英]Azure - permission denied when trying to connect to external MySQL database
[英]Access denied when trying to connect to mysql database via eclipse, java
我正在尝试连接到mysql数据库,但遇到一个相同的错误:javax.servlet.ServletException:java.sql.SQLException:用户'user'@'localhost'的访问被拒绝(使用密码:YES)
Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/employee","user1", "123");
Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/employee","user1", "123");
GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost'; FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost'; FLUSH PRIVILEGES;
顺便说一句,当我尝试与'root'@'localhost'连接时,我遇到了同样的问题。 您有什么想法为什么它仍然无法使用? MySQL JDBC仅能够通过TCP / IP(在Unix上或TCP / IP或Windows上的命名管道)进行连接。
MySQL JDBC驱动程序无法使用本地unix套接字建立连接。
在Unix上的MySQL中, localhost
具有我们可能期望的不同含义。 它不是127.0.0.1 TCP / IP回送地址的主机名同义词。 在Unix上,MySQL用户
'user1'@'localhost'
指定只能通过unix套接字文件连接的用户; 无法通过TCP / IP连接到该用户。
上面解释了为什么MySQL拒绝来自JDBC的连接:连接尝试失败,因为不存在匹配的用户。
要创建从TCP / IP环回地址连接的MySQL用户,假设MySQL以--skip-name-resolve
且没有--skip-networking
,我们可以将user指定为:
'user'@'127.0.0.1'
该用户将允许来自JDBC的连接。
(如果启用了MySQL DNS名称解析,那么我们将需要使用解析为回送地址的主机名;或者我们可以考虑对用户的主机名部分使用通配符'%'。)
试试看可能会有所帮助:
1)转到mysql终端。 2)mysql>使用mysql; 3)mysql>选择用户,从用户主机; 4)用户旁边,将主机设置为“%”,而不是localhost
。
现在在连接中而不是localhost tryp中指定服务器的IP地址。
希望这对您有所帮助。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.