• mysql-2-用户-授权


    1介绍

    1: mysql 默认会自带一些库和表  上图就是配置用户和是否能远程连接

    2:真实情况,一般root用户只能本机访问,其他用户可以远程

    3:创建的用户一般只有某几个库的 全部权限(开发人员) 或 查询权限(测试人员)

    2 用户

     2.1 创建用户,远程连接

      root用户登录mysql

    mysql -uroot -p

    降低密码强度(不建议使用)

    1. SELECT @@VALIDATE_PASSWORD_POLICY;
    2. set global validate_password_policy = 0;
    3. set global validate_password_length=1;

     创建用户张三 密码 123456  只能本地登录访问  localhost本地  

    create user 'zhangsan'@'localhost' identified by '123456';

    创建用户张三 密码 123456 可以远程访问   %远程 ,但是本机访问不了

    create user 'zhangsan'@'%' identified by '123456';

    更新用户是否能远程连接

    1. #展示所有库
    2. show databases;
    3. # 进入mysql数据库(系统自带的)
    4. use mysql;
    5. #查询用户和地址
    6. select user,host from user;
    7. # %为任意访问地址 ,修改用户和地址
    8. update user set host = '%' where user = 'root';
    9. update user set host = 'localhost' where user = 'root';
    10. # 刷新权限 权限更新后刷新才会起作用
    11. flush privileges;

     刷新一下,要不不起作用

    flush privileges;

    2.2 修改密码

    查看是否能 重置密码(不报错就可以)

    SHOW variables LIKE 'validate_password%';

     要是报错  退出客户端 修改配置文件

     exit

    要是报错  配置文件

    vim /etc/my.cnf  
    

    要是报错 [mysqld] 下 增加这两行配置 解决(1820问题)

    1. [mysqld]
    2. #添加密码验证插件
    3. plugin-load-add=validate_password.so
    4. #服务器在启动时加载插件,并防止在服务器运行时删除插件
    5. validate-password=FORCE_PLUS_PERMANENT

    重启mysql

    systemctl restart mysqld

      root 设置新的密码为123456 

    alter user 'root'@'localhost' identified by '123456';

    2.3 授权

    grant :赠送    privileges:特权

    1. 权限列表

    —— all             //所有权限  

    —— usage       //无权限

    —— select,update,insert        //个别权限

    —— select,update (字段1, ... ,字段N)        //指定字段

    1. 库名

    —— *.*             //所有库所有表

    —— 库名.*        //一个库

    —— 库名.表名   //一张表

    1. 客户端地址

    —— %                          //所有主机,(本机除外)

    —— 192.168.233.%      //网段内的所有主机   

    —— 192.168.233.1       //1台主机 

    —— localhost               //数据库服务器本机

    查询root 用户的权限信息:

    SHOW GRANTS FOR 'root';

     用户可以有多个权限,用最大权限,所以一定也要删除某些权限

     删除某个权限 GRANT变 revoke , TO 变 from

    1. 赋予最大权限 和root一样了
    2. GRANT ALL PRIVILEGES ON *.* TO 'zhangsan'@'%'
    3. 删除上面的权限
    4. revoke ALL PRIVILEGES ON *.* FROM 'zhangsan'@'%';

     最大权限和root一样 (这俩都是) 赠送 所有特权 所有库 所有表 到用户张三上 并且 能远程

    grant ALL ON *.* TO 'zhangsan'@'%';
    GRANT ALL PRIVILEGES ON *.* TO 'zhangsan'@'%'

    只允许本地 (本机访问 且 只能对库名 叫 “ku”的数据库下 所有表 所有权限)

    grant all privileges on ku.* to 'zhangsan'@'localhost';

    允许远程 (远程访问 且 只能对库名 叫 “ku”的数据库下 所有表 所有权限)

    1. grant all privileges on ku.* to 'zhangsan'@'%';
    2. grant all privileges on 库名.表名 to '用户名'@'IP地址';

    细粒度对 库名为 "ku" 的权限 增删改查

    grant select, insert, update, delete on ku.* to 'zhangsan'@'%';

    刷新

    flush privileges;

  • 相关阅读:
    一次错综离奇的super调用的None参数super() argument 1 must be type, not None
    free -m 命令详解
    sprint tool suite启动tomcat
    C++学习笔记
    数据湖技术之 Hudi 集成 Flink
    java 里面的基本类型占用的储存空间
    JavaScript面向对象
    【c++每天一题】 小小演唱家
    JS——常用内置对象
    Linux 防火墙 firewalld 常用命令
  • 原文地址:https://blog.csdn.net/weixin_44383484/article/details/127808574