• 四、MySQL权限操作


    用户管理

    定义用户

    #格式
    用户名@'白名单'
    
    #示例
    wordpress@'10.0.0.%'    #允许来自10.0.0.0网段的wordpress数据库用户登录
    wordpress@'%' #允许来自所有网段
    wordpress@'10.0.0.200' #仅允许10.0.0.200地址登录
    wordpress@'localhost'  #仅允许本地登录
    wordpress@'db02'  #仅允许主机名db02登录
    wordpress@'10.0.0.5%' #仅允许10.0.0.50-59登录
    wordpress@'10.0.0.0/255.255.254.0'
    

    案例
    增删改查

    #增加一个用户
    mysql> create user tz@'10.154.0.%' identified by '123';
    
    #查询一个用户
    mysql> desc mysql.user;    #得到authentication_string字段,此字段记录密码。
    mysql> select user ,host ,authentication_string from mysql.user
    
    #更改用户密码
    mysql> alter user tz@'10.154.0.%' identified by '456';
    
    #删除一个用户
    mysql> drop user tz@'10.154.0.%';
    

    权限操作

    授权用户需要注意

    1. 是否有邮件批复
    2. 对哪个数据库以及表进行操作
    3. 执行什么操作
    4. 从哪个IP登录
    5. 密码强度要求
      如果开发人员索要root密码,提示他需要走流程。

    常用权限

    ALL:
    SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE,
     REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, 
     LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, 
     SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, 
     CREATE TABLESPACE
     
    ALL : 以上所有权限,是普通管理员拥有的
    with grant option:超级管理员才具备的,拥有给别的用户授权的功能
    

    权限范围

    *.*              #管理员用户,能操作所有数据库跟表
    wordpress.*      #开发和应用用户,只能操作wordpress数据库下的所有表
    wordpress.t1     #开发和应用用户,只能操作wordpress数据库下的t1表
    

    授权命令

    #创建管理员用户
    mysql> grant all on *.* to root@'10.154.0.%' identified by '123';
    
    #创建应用用户,用户名为app,只能对app数据库进行增删改查
    mysql> grant select ,update,insert,delete on app.* to app@'10.154.0.%' identified by '123';
    
    #查看权限
    mysql> show grants for app@'10.154.0.%';
    
    #回收删除授权
    mysql> revoke  delete on app.*  from app@'10.154.0.%';
    
    #添加with grant option能让tz666用户将自己拥有的权限授权给别人
    mysql> grant all privileges on testdb.* to tz666@'localhost' identified by '123' with grant option;
    
    #查看tz666拥有的权限
    mysql> show grants for tz666@'localhost';
    
    #回收授权权限
    mysql> revoke grant option on *.* from 'tz666'@'localhost';
    

    8.0以后版本的差别

    #8.0以后的版本先创建用户,再给用户授权
    mysql> create user tz@'10.154.0.%' identified by '123';
    mysql> grant all privileges on *.* to 'tz'@'10.154.0.%' identified by '123';
    
    #8.0以前的版本可以边创建用户边授权
    mysql> grant all on mysql.* to tz@'%' identified by '123';
    

    参考资料: mysql8.0版本添加用户跟权限

    mysql常用参数

    -u                   用户
    -p                   密码
    -h                   IP
    -P                   端口
    -S                   socket文件
    -e                   免交互执行命令
    <                    导入SQL脚本
    
    
    mysql> select @@socket;
    +-----------------+
    | @@socket        |
    +-----------------+
    | /tmp/mysql.sock |
    
    $ mysql -uroot -p -S /tmp/mysql.sock
    
    $ mysql -uroot -p -e "select user,host from mysql.user;"
    Enter password:
    +---------------+-----------+
    | user          | host      |
    +---------------+-----------+
    | abc          | 10.0.0.%  |
    | app          | 10.0.0.%  |
    | root          | 10.0.0.%  |
    | mysql.session | localhost |
    | mysql.sys    | localhost |
    | root          | localhost |
    +---------------+-----------+
    
    $ mysql -uroot -p <world.sql
    

    三种启动方式


    mysqld启动:/usr/local/mysql/bin/mysqld 即可启动mysql。

    mysqld_safe 启动:这是启动脚本,在mysqld上再封装了一个监控程序,当mysqld挂了的时候,可以帮忙重启,并记录日志。一般用于维护性的任务,后面可跟需要添加的参数。

    #启动
    mysql> mysqld_safe --defaults-file=my.cnf > mysqld.log 2>&1 &
    
    #关闭
    mysql> mysqladmin -uroot -p shutdown
    

    参考资料: mysqld_safe启停

    mysql.server:这也是启动脚本,调用mysqld_safe启动,启动mysql.server start

    配置文件

    查看/etc/my.cnf配置文件

    $ cat /etc/my.cnf
    [mysqld]
    user=mysql
    basedir=/usr/local/mysql-5.7.26
    datadir=/usr/local/mysql-5.7.26/data
    socket=/tmp/mysql.sock
    #服务器id号,用于主从复制,取值范围1-65535
    server_id=6
    port=3306
    #客户端配置
    [mysql]
    socket=/tmp/mysql.sock
    

    配置文件读取顺序

    $ mysqld --help --verbose |grep my.cnf
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
    

    注:
    默认情况下,MySQL启动时,会依次读取以上配置文件,如果有重复选项,会以最后一个文件设置的为准。
    但是,如果启动时加入了--defaults-file=/etc/my.cnf时,就只会读取my.cnf配置文件.

    学习来自:郭老师博客,老男孩深标DBA课程 第二章

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    SP3946 MKTHNUM
    P1948 [USACO08JAN]电话线Telephone Lines(二分答案+最短路)
    CF375D Tree and Queries(dsu on tree)
    P2051 [AHOI2009]中国象棋(动态规划)
    P3810 【模板】三维偏序(陌上花开)(cdq分治)
    P4390 [BOI2007]Mokia 摩基亚(cdq分治)
    P2163 [SHOI2007]园丁的烦恼(cdq分治)
    UVA11270 Tiling Dominoes(轮廓线动态规划)
    P2475 [SCOI2008]斜堆(递归模拟)
    P2617 Dynamic Rankings(带修主席树)
  • 原文地址:https://www.cnblogs.com/tz90/p/14309190.html
Copyright © 2020-2023  润新知