V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
XiLemon
V2EX  ›  程序员

MySQL: Access denied for user 问题

  •  
  •   XiLemon · 2017-11-23 16:43:05 +08:00 · 3333 次点击
    这是一个创建于 2553 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2017-11-23_16-24-02.png 2017-11-23_16-25-33.png

    在本地电脑上,用 Navicat 能连上服务器上的 MySQL,但是自己的程序连不上,日志里边 @后面显示的不是 IP,是本地电脑的名称。
    用 Navicat 查到的 user 表里面 guest 用户相关的记录有两条,联系数据库提供方的人,让他们删除了我觉得有问题的一条:

    %localhost | guest | ......

    现在程序还是连不上 MySQL,Navicat 依旧可以正常连上使用。网上 Google 了一通,目前还没有找到解决办法,求支招。

    12 条回复    2017-11-24 09:20:20 +08:00
    XiLemon
        1
    XiLemon  
    OP
       2017-11-23 17:40:01 +08:00
    各位老铁,有没有解决方法哟!!!
    b821025551b
        2
    b821025551b  
       2017-11-23 17:45:19 +08:00
    1:在程序里把连接地址改成"localhost",或者
    2:在 MySQL 里给你电脑做个授权
    hackerhuanggit
        3
    hackerhuanggit  
       2017-11-23 17:46:29 +08:00
    @XiLemon 你需要在 mysql 的配置文件里,给你需要连接电脑的 iP 地址权限
    dawncold
        4
    dawncold  
       2017-11-23 17:49:29 +08:00
    程序里用 localhost 也连不上吗?
    XiLemon
        5
    XiLemon  
    OP
       2017-11-23 18:06:51 +08:00
    @dawncold 你说的 localhost 是指? MySQL 在服务器上。
    XiLemon
        6
    XiLemon  
    OP
       2017-11-23 18:25:25 +08:00
    @b821025551b
    @hackerhuanggit

    数据库没权限弄啊,服务器也上不了的。
    dawncold
        7
    dawncold  
       2017-11-23 19:57:54 +08:00
    看起来你本机的程序向本机的 MySQL 建立连接,如果你本机没有 MySQL 的话,连不上是正常的。你可以连服务器的 MySQL,那你程序中修改连接 MySQL 的主机地址也是可以连上的,否则你的 Navicat 是如何连接到远程的?
    XiLemon
        8
    XiLemon  
    OP
       2017-11-23 20:13:25 +08:00
    @dawncold 本机木有 MySQL,可能是我没有权限访问我要访问的那个数据库,他们数据库改用另外一个了,配置里面改一下数据库名就好了。。。

    不过我用 Navicat 还是能查看所有的数据库表欸。。。
    xfspace
        9
    xfspace  
       2017-11-23 20:44:33 +08:00 via Android
    @XiLemon 你的“程序”没改 MySQL server 地址吧,不然怎么也得提示 `guest` @ `数据库提供方的服务器地址`
    JarvisHuang
        10
    JarvisHuang  
       2017-11-23 22:21:49 +08:00
    当 mysql 部署在其他服务器上时,要远程访问就需要分配权限了。 分配步骤如下:

    1 登录到 mysql 中
    mysql -u root -p
    2 切换到 mysql 数据库下
    use mysql;
    3 授权远程登录的用户及地址
    //授权的地址为 192.168.1.101 ,用户为 root,密码为 123456
    > grant all PRIVILEGES on test_db.* to root@'192.168.1.101' identified by '123456';
    4 让修改的配置生效
    > flush privileges;
    cheky
        11
    cheky  
       2017-11-23 22:29:00 +08:00
    前几天刚帮学生解决过这个问题,applicationContext 读取 properties 文件的方式有问题,换 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 这种就好了。
    XiLemon
        12
    XiLemon  
    OP
       2017-11-24 09:20:20 +08:00
    @xfspace
    @JarvisHuang
    @cheky 记下,已备不时之需。

    目前已经解决了,URL  里面换成另外一个数据库就好了,应该是他们换数据库了。  

    其实我不明白的地方在于,用 Navicat 在上,用一样的账号是可以访问所有数据库的,能查看所有表的记录啊,但是程序里面用原来的数据库,就显示 Access denied。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1156 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.