zoukankan      html  css  js  c++  java
  • MySQL疑02-用户权限表问题

    一 问题描述:

    在本地无法直接使用本地ip(192.168.3.73)连接数据库,需将主机ip设为127.0.0.1才可连接
    127.0.0.1为本地回环地址,专门用于本机网络测试

    import pymysql
    
    conn = pymysql.connect(
        # host = '127.0.0.1',            # 此处使用127.0.0.1正常连接
        host = '192.168.3.73',           # 此处改为本机的ip地址则如下报错
        port = 3306,
        user = 'root',
        password = '123',
        database = 'day48',
        charset = 'utf8'  # 编码千万不要加-
    )  # 链接数据库
    

    这是因为在MySQL的权限表中,未添加本机的ip地址,所以用本机ip来连接,会被拒接。

    二、解决方案

    2.1 查看权限表

    # 先查看当前数据库的权限表
    mysql> use mysql;
    mysql> select host,user from user;
    

    2.2 修改权限表

    mysql> update user set host = "192.168.3.73" where user="root";
    # 或 使用 update user set host = "%" where user = "root"; 来匹配所有ip地址,即让外部ip均可访问
    mysql> select host,user from user;
    

    三、用户表详解

    MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限,而普通用户拥有指定的权限。

    MySQL是通过权限表来控制用户对数据库访问的,权限表存放在mysql数据库中,主要的权限表有以下几个:user,db,host,table_priv,columns_priv和procs_priv,先带你了解的是user表。

    通常用户信息、修改用户的密码、删除用户及分配权限等就是在mysql数据库的user表中。

    用户列(用户连接MySQL数据库需要输入的信息)

    Host:主机名,双主键之一,值为%时表示匹配所有主机。User:用户名,双主键之一。Password:密码名。

    (root,%),表示可以远程登录,并且是除服务器外的其他任何终端,%表示任意IP都可登录。
    (root,localhost), 表示可以本地登录,即可以在服务器上登陆,localhost则只允许本地登录。
    (root,127.0.0.1 ),表示可以本机登陆,即可以在服务器上登陆
    (root,sv01),表示主机名为sv1可以登陆,sv01具体指的哪台机器,可以在cat /etc/hostname查看
    (root,::1) , 表示本机可以登陆, 看密码都是相同嘛,具体::1代表意义,待查

    参照:https://www.cnblogs.com/liuhaidon/archive/2019/09/12/11511129.html

  • 相关阅读:
    【BZOJ 3709: [PA2014]Bohater】
    清北学堂2019.8.10 & 清北学堂2019.8.11 & 清北学堂2019.8.12
    清北学堂2019.8.9
    清北学堂2019.8.8
    清北学堂2019.8.7
    清北学堂2019.8.6
    【洛谷T89379 【qbxt】复读警告】
    【洛谷T89353 【BIO】RGB三角形】
    【洛谷T89359 扫雷】
    【洛谷P2016战略游戏】
  • 原文地址:https://www.cnblogs.com/zhubincheng/p/12846294.html
Copyright © 2011-2022 走看看