• 云途科技成立于2010年 - 专注全球跨境电商服务器租赁托管!
  • 帮助中心

    您可以通过下方搜索框快速查找您想知道的问题

    mysql命令行下用户管理

      in  数据库      Tags: 

    mysql安装后好,会有一个名字为mysql的数据库,存放用户的表是user,mysql数据库的用户管理就是围绕这个表展开的,当然还有一些表,例如:tables_priv,procs_priv,clumns_priv,information_schema数据库里面的USER_PRIVILEGES等。

    如果有mysql管理工具phpmyadmin的话,我们可以通过图形画界面来对用户进行管理,但是如果没有phpmyadmin这样的管理工具怎么办呢?这个时候,我们可以通过命令行执行sql语句来管理mysql的用户。

    一,添加用户

    1,create user

    语法:

    CREATE USER user_specification
        [, user_specification] ...
    
    user_specification:
        user [IDENTIFIED BY [PASSWORD] 'password']
    

    实例:

    mysql> create user '44'@'127.0.0.1';    //创建一个44用户
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> create user '33'@'localhost' identified by 'aaaa';    //创建一个33用户,密码为aaaa
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from  mysql.user where user='33' or user='44'\G;    //查看一下mysql下的user

    create user 虽然可以创建用户,但是它只是创建用户,并没有给用户分配置权限,所以一般被 grant命令所取代。

    2,grant

    语法:

    GRANT
        priv_type [(column_list)]
          [, priv_type [(column_list)]] ...
        ON [object_type] priv_level
        TO user_specification [, user_specification] ...
        [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
        [WITH with_option ...]
    
    object_type:
        TABLE
      | FUNCTION
      | PROCEDURE
    
    priv_level:
        *
      | *.*
      | db_name.*
      | db_name.tbl_name
      | tbl_name
      | db_name.routine_name
    
    user_specification:
        user [IDENTIFIED BY [PASSWORD] 'password']
    
    ssl_option:
        ssl
      | X509                         #要求x509证书
      | CIPHER 'cipher'              #加密算法
      | ISSUER 'issuer'              #证书发行商
      | SUBJECT 'subject'            #主题
    
    with_option:
        GRANT OPTION
      | MAX_QUERIES_PER_HOUR count               #每小时最多执行多少条sql
      | MAX_UPDATES_PER_HOUR count               #每小时最多更新多少条数据
      | MAX_CONNECTIONS_PER_HOUR count           #每小时最大的联接数是多少
      | MAX_USER_CONNECTIONS count               #最大用户联接数
    

    不要被上面的语法吓倒,其实理解什么意思,就很容易掌握。我是这样理解的。

    grant 权限 on 应用范围(数据库表,方法等) to 用户(用@隔开,前面是用户名后面是主机名'用户名'@'主机名') identified by 密码 require 要求什么的 with 对用户的进行的执行sql的条数控制。

    个人觉得,只要记得上面几个红色的关键词,基本上这个命令就掌握了。

    Privilege Meaning
    ALL [PRIVILEGES] 所有权限
    ALTER 可以使用alter table
    ALTER ROUTINE 可以使用alter routine
    CREATE 可以创建数据库和表
    CREATE ROUTINE 可以使用create routine
    CREATE TEMPORARY TABLES 可以使用临时表
    CREATE USER 可以对用户进添加,删除,重命名,撤销权限
    CREATE VIEW 可以创建和修改视图
    DELETE 可以删除数据
    DROP 可能删除数据库,表,视图等
    EVENT 可以使用事件高度器
    EXECUTE 可以执行routine
    FILE 可以在服务器读写文件
    GRANT OPTION 用户有权对自己添加的用衣授权
    INDEX 可以创建,删除索引
    INSERT 可以插入
    LOCK TABLES 可以锁定表
    PROCESS 可以使用SHOW PROCESSLIST来查看mysql当前用户的执行sql情况
    REFERENCES Not implemented
    RELOAD 可以使用刷新功能
    REPLICATION CLIENT 用户可以进行主从同步
    REPLICATION SLAVE 主从同步时,从服务器可以从主服务器读取binary log
    SELECT 可以查找
    SHOW DATABASES 可以使用show databases来查看所有数据库
    SHOW VIEW 可以使用show view来查看视图
    SHUTDOWN 可以使用mysqladmin中的参数shutdown
    SUPER Enable use of other adminstrative operations such as CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command
    TRIGGER 可以使用触发器
    UPDATE 可以进行理会新操作
    USAGE 无特权

    实例:

     grant all ON test.* TO 'test'@'localhost';     //test用户拥有test数据库下的所有操作
     grant select,update on test.user to 'test'@'localhost';    //test用户可以对test数据库下user表,进行查找和更新操作
     //test用户的的密码是111111,对user表中的name字段有读取权限,对id,name有更新权限
     grant select(name),update(id,name) on test.user to 'test'@'localhost' identified by '111111';
     //test用户对所有数据库拥有所有权力,并且要求ssl加密
     grant all privileges on *.* to 'test'@'%' identified by '123456' require ssl

    当添加完用户后,别忘 了 flush privileges;

    二,删除用户

    语法:

    DROP USER user [, user] ...
    

    实例:

    drop user 'test2'@'localhost'; //当用drop删除用户进,tables_priv,procs_priv等表中的数据也会被删除

    在这里为什么要用'test2'@'localhost'当用户名,而不是直接test2呢,因为mysql.user这张表,是根用户名和host名决定一个用户,你可查看一下表结构就知道了。

    show create table mysql.user\G;你会发现有这个东西PRIMARY KEY (`Host`,`User`),表示联合主键

    三,修改用户

    语法:

    RENAME USER old_user TO new_user
        [, old_user TO new_user] ...
    

    实例:

    rename user 'test2'@'localhost' to 'test'@'%';

    四,修改权限

    语法:

    REVOKE
        priv_type [(column_list)]
          [, priv_type [(column_list)]] ...
        ON [object_type] priv_level
        FROM user [, user] ...
    
    REVOKE ALL PRIVILEGES, GRANT OPTION
        FROM user [, user] ...
    

    grant就给用户分配权限,revoke是把权限从用户的身上拿走。

    实例:

    mysql> revoke update on *.* from 'tank'@'localhost';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select mysql.user.update_priv from mysql.user where user='tank' and host='localhost';
    +-------------+
    | update_priv |
    +-------------+
    | N           |
    +-------------+
    1 row in set (0.00 sec)
    

    去掉tank@localhost这个用户的更新功能,这个是去掉一个权限,如果我要全部去掉怎么办呢,一个一个写太麻烦了,看下面的一个例子

    mysql> revoke all privileges ,grant option from '33'@'localhost';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    

    用掉33@localhost这个用户的所有权限



    • 外贸虚拟主机

      1GB硬盘

      2个独立站点

      1000M带宽

      不限制流量

      美国外贸专用虚拟主机,cPanel面板,每天远程备份.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥180/年

    • 美国/荷兰外贸VPS

      2核CPU

      1G内存

      30硬盘

      10M带宽

      美国/荷兰外贸云服务器,专注外贸服务器行业12年.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥99/月

    • 全球外贸服务器

      8核CPU

      32G内存

      1TB硬盘

      1000M带宽

      已部署数据中心:美国洛杉矶/亚特兰大、荷兰、加拿大、英国伦敦、德国、拉脱维亚、瑞典、爱沙尼亚
      自有机柜(全球九大数据中心),稳定在线率:99.9%

      ¥999/月 原价1380

    7*24小时 在线提交工单

    如果您的问题没有得到解决,推荐您在线提交工单,我们的客服人员会第一时间为您解决问题

    展开