• MySQL的用户和权限介绍


    一、关于MySQL权限的几点常识:

    1、MySQL的权限系统主要用来验证用户的操作权限。

    2、在MySQL内部,权限信息存放在MySQL数据库的granttable里。当mysql启动后,granttable里的信息会写入内存。

    3、MySQL 使用user name 加 host name 来作为标识符。

    通过这种标识符,可以用来区分不同host上的相同的user name。

    4、MySQL 权限控制有2种策略:

    1)根据密码是否正确来控制客户端的连接。

    2)假设可以正常connect,server还可以检查每个satement是否有权限去执行。如果只有某张表的select 权限,就不能进行drop 操作。

    5、如果用户的权限改变,当前已连接的会话用户不会受影响,下次登录才会生效。

    二、关于MySQL的几个有关权限表的含义:

    user:用户账号、全局权限

    db:库级别权限

    host:废弃

    tables_priv:表级别权限

    colums_priv:列级别权限

    procs_priv:存储过程和存储函数相关的权限

    proxies_priv:代理用户权限

    三、MySQL用户账号的创建规则

    用户名@主机

    用户名:16字符以内

    主机:

    主机名:www.test.com,mysql

    IP:192.168.2.1

    网络地址:192.168.0.0/255.255.0.0

    通配符:%,192.168.%.%,%.test.com

    四、MySQL的用户权限级别

    服务管理类:super

    库:CREATE

    表:DELETE、ALTER

    列:INSERT、SELECT、UPDATE

    更多级别可参考MySQL官方文档

    五、与权限相关的几个命令

    GRANT 权限,... ON [对象类型] db.{table|routine} TO 'username'@'host' [INDENTIFIED BY 'password'];

    REVOKE 权限,... ON [对象类型] db.{table|routine} FROM 'username'@'host';

    SHOW GRANTS FOR 'username'@'host';

    CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];

    DROP USER 'username'@'host';

    RENAME USER old_name TO new_name;

    六、权限的操作命令举例

    查看当前数据库的所有用户:

    select user,host,password from mysql.user;

    给用户赋予super权限(super和ALL PRIVILEGES都可以):

    GRANT super ON *.* TO 'mysql'@'localhost';

    GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost';

    删除用户的super权限(super和ALL PRIVILEGES都可以):

    REVOKE super ON *.* FROM 'mysql'@'localhost';

    REVOKE ALL PRIVILEGES ON *.* FROM 'mysql'@'localhost';

    查看赋予用户的权限

    SHOW GRANTS FOR 'mysql'@'localhost';

    七、MySQL的问题处理

    1、MySQL登录密码忘记时的恢复操作

    启动mysql_safe时传递两个参数:

    --skip-grant-tables      跳过授权表

    --skip-networking       为了安全,防止网络登录

    登录方式一:

    修改/etc/init.d/mysql

    wKiom1RytyujvuBPAACcs_s8lZQ687.jpg

    登录方式二:

    直接在my.cnf配置

    [mysqld]

    skip-grant-tables

    skip-networking

    而后修改密码:

    通过更新授权表方式直接修改其密码,而后移除此两个选项重启服务器

    UPDATE user SET PASSWORD=PASSWORD('123456') WHERE User='root'

    2、客户端连接MySQL数据库速度慢的问题

    直接在my.cnf配置,关闭DNS的反向解析参数

    [mysqld]

    skip-name-resolve

  • 相关阅读:
    DOCTYPE
    js——类型转换
    对象Object
    Array数组
    es6学习笔记
    springboot第一个项目【mybatis】
    springboot第一个项目【创建】
    项目管理和流程的拙见
    树莓派 Zero作为飞控图传
    一根数据线玩转树莓派Zero
  • 原文地址:https://www.cnblogs.com/dyllove98/p/4119173.html
Copyright © 2020-2023  润新知