zoukankan      html  css  js  c++  java
  • MySQL -- 创建用户 CREATE USER 、GRANT语句

    1. 使用CREATE USER语句创建用户

    可以使用 CREATE USER 语句来创建 MySQL 用户,并设置相应的密码。其基本语法格式如下:

    CREATE USER <用户> [ IDENTIFIED BY [ PASSWORD ] 'password' ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] 'password' ]]

    参数说明如下:

    1) 用户

    指定创建用户账号,格式为 user_name'@'host_name。这里的user_name是用户名,host_name为主机名,即用户连接 MySQL 时所用主机的名字。如果在创建的过程中,只给出了用户名,而没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限。

    3) IDENTIFIED BY子句

    用于指定用户密码。新用户可以没有初始密码,若该用户不设密码,可省略此子句。

    2) PASSWORD 'password'

    PASSWORD 表示使用哈希值设置密码,该参数可选。如果密码是一个普通的字符串,则不需要使用 PASSWORD 关键字。'password' 表示用户登录时使用的密码,需要用单引号括起来。

    使用 CREATE USER 语句时应注意以下几点:

    • CREATE USER 语句可以不指定初始密码。但是从安全的角度来说,不推荐这种做法。
    • 使用 CREATE USER 语句必须拥有 mysql 数据库的 INSERT 权限或全局 CREATE USER 权限。
    • 使用 CREATE USER 语句创建一个用户后,MySQL 会在 mysql 数据库的 user 表中添加一条新记录。
    • CREATE USER 语句可以同时创建多个用户,多个用户用逗号隔开。


    新创建的用户拥有的权限很少,它们只能执行不需要权限的操作。如登录 MySQL、使用 SHOW 语句查询所有存储引擎和字符集的列表等。如果两个用户的用户名相同,但主机名不同,MySQL 会将它们视为两个用户,并允许为这两个用户分配不同的权限集合。

    例 1

    使用 CREATE USER 创建一个用户,用户名是 test1,密码是 test1,主机名是 localhost。SQL 语句和执行过程如下。

    mysql> CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1';
    Query OK, 1 rows affected (0.06 sec)

    结果显示,创建 test1 用户成功。
    实际应用中,我们应避免明文指定密码,可以通过 PASSWORD 关键字使用密码的哈希值设置密码

    例 2

    在 MySQL 中,可以使用 password() 函数获取密码的哈希值,查看 test1 哈希值的 SQL 语句和执行过程如下:

    mysql> SELECT password('test1');
    +-------------------------------------------+
    | password('test1')                         |
    +-------------------------------------------+
    | *06C0BF5B64ECE2F648B5F048A71903906BA08E5C |
    +-------------------------------------------+
    1 row in set, 1 warning (0.00 sec)

    “*06C0BF5B64ECE2F648B5F048A71903906BA08E5C”就是 test1 的哈希值。下面创建用户 test1,SQL 语句和执行过程如下:

    mysql> CREATE USER 'test1'@'localhost'IDENTIFIED BY PASSWORD '*06C0BF5B64ECE2F648B5F048A71903906BA08E5C';
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    执行成功后就可以使用密码“test1”登录了。

    2. 使用GRANT语句新建用户

    虽然 CREATE USER 和 INSERT INTO 语句都可以创建普通用户,但是这两种方式不便授予用户权限。于是 MySQL 提供了 GRANT 语句。

    使用 GRANT 语句创建用户的基本语法形式如下:

    GRANT priv_type ON database.table TO user [IDENTIFIED BY [PASSWORD] 'password']

    其中:

    • priv_type 参数表示新用户的权限;
    • database.table 参数表示新用户的权限范围,即只能在指定的数据库和表上使用自己的权限;
    • user 参数指定新用户的账号,由用户名和主机名构成;
    • IDENTIFIED BY 关键字用来设置密码;
    • password 参数表示新用户的密码。

    例 4

    下面使用 GRANT 语句创建名为 test3 的用户,主机名为 localhost,密码为 test3。该用户对所有数据库的所有表都有 SELECT 权限。SQL 语句和执行过程如下:

    mysql> GRANT SELECT ON*.* TO 'test3'@localhost IDENTIFIED BY 'test3';
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    其中,“*.*” 表示所有数据库下的所有表。结果显示创建用户成功,且 test3 用户对所有表都有查询(SELECT)权限。

    技巧:GRANT 语句是 MySQL 中一个非常重要的语句,它可以用来创建用户、修改用户密码和设置用户权限。教程后面会详细介绍如何使用 GRANT 语句修改密码、更改权限。

  • 相关阅读:
    《洛谷P2296 寻找道路》
    《浙江科技学院第17届大学生程序设计竞赛:D:合并序列》
    《数论整理二》
    《洛谷P1282 多米诺骨牌》
    《洛谷P2140 小Z的电力管制》
    《洛谷P2798 爆弹虐场》
    Linux下运行C语言程序
    计算圆柱的底面积和体积
    将摄氏温度转化为华氏温度
    如果今天是星期二,那么100天后是星期几?
  • 原文地址:https://www.cnblogs.com/gengyufei/p/13378482.html
Copyright © 2011-2022 走看看