V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
MrMike
V2EX  ›  Python

PySQL 远程连不上 MySQL,请问还有其它什么原因造成的呢?

  •  
  •   MrMike · 2020-04-20 11:13:33 +08:00 · 3077 次点击
    这是一个创建于 1682 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已经开启了数据库用户权限,也打开了端口,本地用客户端软件和 php 都可以链接上数据库,但是用 pysql 就是连不上。 请问这个还有其它什么原因造成的呢?

    pymysql.err.OperationalError: (1045, "Access denied for user '数据库名'@'本地网络 IP' (using password: YES)")

    33 条回复    2020-04-21 07:50:31 +08:00
    aydd2004
        1
    aydd2004  
       2020-04-20 11:21:30 +08:00 via iPhone
    mysql 8.x 版本?
    MrMike
        2
    MrMike  
    OP
       2020-04-20 11:28:09 +08:00
    @aydd2004 5.6 和 5.7
    Mac
        3
    Mac  
       2020-04-20 11:32:41 +08:00
    用户名 @%
    MrMike
        4
    MrMike  
    OP
       2020-04-20 11:33:13 +08:00
    @Mac 是的。
    awanabe
        5
    awanabe  
       2020-04-20 11:33:26 +08:00
    bind-address=127.0.0.1 去掉没?
    MrMike
        6
    MrMike  
    OP
       2020-04-20 11:34:06 +08:00
    @Mac
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
    flush privileges;

    已经操作过这样的步骤了。
    claysec
        7
    claysec  
       2020-04-20 11:34:32 +08:00
    用户权限
    MrMike
        8
    MrMike  
    OP
       2020-04-20 11:35:50 +08:00
    @awanabe 没有配置这个。
    MrMike
        9
    MrMike  
    OP
       2020-04-20 11:36:39 +08:00
    @claysec 本地客户端软件和用 PHP 都可以链接。权限也开通了的。
    MrMike
        10
    MrMike  
    OP
       2020-04-20 11:37:47 +08:00
    服务器用的是宝塔面板,是不是跟这个有关系?
    julyclyde
        11
    julyclyde  
       2020-04-20 11:50:20 +08:00
    你这不是连不上,而是连上之后被拒了

    at 符号后面指定的地址,如果有更详细的,会优先匹配更详细的那个的权限
    Kelan
        12
    Kelan  
       2020-04-20 11:51:17 +08:00
    也可能只是用户名 /密码打错了或者转义了
    BealuoC
        13
    BealuoC  
       2020-04-20 11:52:31 +08:00
    @MrMike 宝塔我记得好像要在设置那里放端口
    MrMike
        14
    MrMike  
    OP
       2020-04-20 11:53:57 +08:00
    @BealuoC 端口开放了的。
    MrMike
        15
    MrMike  
    OP
       2020-04-20 11:54:36 +08:00
    @julyclyde
    @Kelan

    同样的链接信息,客户端和 php 都可以链接。我再查查什么原因吧。
    drizztdu
        16
    drizztdu  
       2020-04-20 11:57:08 +08:00
    看样子是没开放密码连接 默认是 socket 连接
    Inn0cence
        17
    Inn0cence  
       2020-04-20 11:57:32 +08:00
    1.用户名密码有特殊字符
    2.mysql8+的密码加密方式变更了,需要修改配置
    MrMike
        18
    MrMike  
    OP
       2020-04-20 12:00:29 +08:00
    @Inn0cence 没有特殊字符,只是数+大小写字母,不是 mysql8,是 5.6
    Inn0cence
        19
    Inn0cence  
       2020-04-20 12:02:34 +08:00
    @MrMike 数据库连接的 uri 怎么写的 贴个脱敏版本出来的看看吧
    Vegetable
        20
    Vegetable  
       2020-04-20 12:05:20 +08:00
    @之前是用户名,你这个数据库名是什么鬼?
    zanelee
        21
    zanelee  
       2020-04-20 12:20:50 +08:00
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
    flush privileges; 语句是这样一模一样复制上去的吗??? 这语句上去 FLUSH 以后你用用户名:username,密码:password 能远程登录了。你用你自己 root 账号 root 密码肯定还是不行的啊。
    zanelee
        22
    zanelee  
       2020-04-20 12:22:19 +08:00
    @zanelee 你本地用 root 和 root 密码肯定可以登录的
    jimmy2010
        23
    jimmy2010  
       2020-04-20 12:22:30 +08:00 via Android
    localhost 和 127.0.0.1 的区别?
    MrMike
        24
    MrMike  
    OP
       2020-04-20 13:29:12 +08:00
    @Inn0cence

    import pymysql

    pymysql.connect('remote_server_ip', 'database_user', 'database_name', 'database_password')
    MrMike
        25
    MrMike  
    OP
       2020-04-20 13:30:03 +08:00
    @zanelee 肯定是改过的啊,不可能把真实的数据库信息发在网上啊。
    MrMike
        26
    MrMike  
    OP
       2020-04-20 13:48:01 +08:00
    连上了。

    pymysql.connect('remote_server_ip', 'database_user', 'database_name', 'database_password')

    不熟悉 python 的开发,之前直接网上复制的链接信息,本地调试也能用,就没有怀疑这个链接的问题。刚才参考 pymysql 的链接配置,将数据库名和密码调换了下位置,就可以了。

    感谢各位朋友的指教,谢谢。结贴。
    DoUSeeMe
        27
    DoUSeeMe  
       2020-04-20 15:14:08 +08:00
    可能是交易不足
    aydd2004
        28
    aydd2004  
       2020-04-20 15:47:19 +08:00 via iPhone
    @MrMike
    conn = pymysql.connect(
    host=“你的数据库地址”,
    user=“用户名”,password=“密码”,
    database=“数据库名”,
    charset=“utf8”)
    我都这么些 ,这样顺序颠倒也没事好像
    smallgoogle
        29
    smallgoogle  
       2020-04-20 15:55:01 +08:00
    端口设置一下。端口要 int 类型。str 类型好像就不可以。
    nicebird
        30
    nicebird  
       2020-04-20 16:47:37 +08:00
    这里面任意一个参数不对,都可能,检查吧。
    qianc1990
        31
    qianc1990  
       2020-04-20 18:13:18 +08:00 via iPhone
    楼主应该是没有指定关键字参数
    MrMike
        32
    MrMike  
    OP
       2020-04-21 00:31:21 +08:00
    @aydd2004 应该是跟我没有跟关键字的原因,不跟关键字的话,可能对参数顺序有要求。现在问题解决了。谢谢。
    Weixiao0725
        33
    Weixiao0725  
       2020-04-21 07:50:31 +08:00
    乌龙贴
    close
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3859 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:29 · PVG 18:29 · LAX 02:29 · JFK 05:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.