我在MyEclipse建个web工程,需要连接数据库,但是每次打开页面就出现上面的错误。我在DB Browser里面已经通过连接,用户名和密码都是root。
我在网上搜到的答案都是改密码的,我密码没有问题。请问有啥解决途径?
你好,能具体一点吗,我是在myeclipse中用java连接的mysql数据库,是在一个注册程序中需要连接数据库,进行查询和保存数据。另我没法直接打开mysql.exe。虚心求教。
追答能否通过进入数据库的DOS界面,或者能操作mysql数据库(数据库名是mysql).
如果能,那就在mysql库下中的user表中插入一条权限记录。
mysql>SELECT host, user, password FROM user WHERE user != 'root';
+-----------+---------+-------------------------------------------+
| HOST | USER | PASSWORD |
+-----------+---------+-------------------------------------------+
| localhost | | *A4B6157319038724E3560894F7F932C8886EBFCF |
| % | crawler | *00A51F3F48415C7D4E8908980D443C29C69B60C9|
+-----------+---------+-------------------------------------------+
1,HOST字段中通配符'%'匹配所有主机,如果HOST字段为空,等价于'%'
2,USER字段不支持通配符,但空白的USER字段匹配所有用户
3,服务器在user表中读取权限时,优先匹配最能确定具体主机的纪录,由于'%'匹配所有主机,所以localhost优先于'%'
4,有相同HOST值的记录,优先匹配具体user值的记录。
在上面的示例中,mysql未使用-h选项时,连接本地UNIX套接字(使用-h选项时,连接的是TCP/IP套接字,也就是IP加端口),HOST匹配localhost:
由于用户crawler在user表中,没有host值为localhost的记录,所以优先匹配记录为"所有从localhost登录的用户"在本例中
AnyUser@localhost优先级高于crawler@%,故使用crawler@%的密码在本机无法登录。
当使用'mysql -u crawler -pXXX DBNAME -h 10.10.10.11'时,匹配crawler@%,密码有效。
细心的兄弟可能已经注意到了:
127.0.0.1和localhost是同一台机器,为什么'mysql -u crawler -pXXX DBNAME -h 127.0.0.1'却可以成功登录呢?
更细心的兄弟可能已经猜到答案了:
我启动mysqld时使用了'--skip-name-resolve'参数,此种情况下由于不做域名解析,127.0.0.1和localhost对mysql数据库来讲,是不同的主机,与AnyUser@localhost并不匹配。(所以一般使用'--skip-name-resolve'参数启动mysql数据库时,HOST字段一般使用IP地址)
问题的原因已经找到,要解决这个问题,下面三种方法选一种即可:
1、将AnyUser@localhost记录删除
2、添加一条crawler@localhost记录
3、使用时-h选项指定主机