• TiDB 用户账户管理
    • 用户名和密码
    • 添加用户
    • 删除用户
    • 保留用户账户
    • 设置资源限制
    • 设置密码

    TiDB 用户账户管理

    用户名和密码

    TiDB 将用户账户存储在 mysql.user 系统表里面。每个账户由用户名和 host 作为标识。每个账户可以设置一个密码。

    通过 MySQL 客户端连接到 TiDB 服务器,通过指定的账户和密码登陆:

    1. shell> mysql --port 4000 --user xxx --password

    使用缩写的命令行参数则是:

    1. shell> mysql -P 4000 -u xxx -p

    添加用户

    添加用户有两种方式:

    • 通过标准的用户管理的 SQL 语句创建用户以及授予权限,比如 CREATE USERGRANT
    • 直接通过 INSERTUPDATEDELETE 操作授权表。

    推荐的方式是使用第一种。第二种方式修改容易导致一些不完整的修改,因此不推荐。还有另一种可选方式是使用第三方工具的图形化界面工具。

    下面的例子用 CREATE USERGRANT 语句创建了四个账户:

    1. mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
    2. mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost' WITH GRANT OPTION;
    3. mysql> CREATE USER 'finley'@'%' IDENTIFIED BY 'some_pass';
    4. mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'%' WITH GRANT OPTION;
    5. mysql> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin_pass';
    6. mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
    7. mysql> CREATE USER 'dummy'@'localhost';

    使用 SHOW GRANTS 可以看到为一个用户授予的权限:

    1. mysql> SHOW GRANTS FOR 'admin'@'localhost';
    2. +-----------------------------------------------------+
    3. | Grants for admin@localhost |
    4. +-----------------------------------------------------+
    5. | GRANT RELOAD, PROCESS ON *.* TO 'admin'@'localhost' |
    6. +-----------------------------------------------------+

    删除用户

    使用 DROP USER 语句可以删除用户,例如:

    1. mysql> DROP USER 'jeffrey'@'localhost';

    保留用户账户

    TiDB 在数据库初始化时会生成一个 'root'@'%' 的默认账户。

    设置资源限制

    暂不支持。

    设置密码

    TiDB 将密码存在 mysql.user 系统数据库里面。只有拥有 CREATE USER 权限,或者拥有 mysql 数据库权限( INSERT 权限用于创建, UPDATE 权限用于更新)的用户才能够设置或修改密码。

    CREATE USER 创建用户时可以通过 IDENTIFIED BY 指定密码:

    1. CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';

    为一个已存在的账户修改密码,可以通过 SET PASSWORD FOR 或者 ALTER USER 语句完成:

    1. SET PASSWORD FOR 'root'@'%' = 'xxx';

    或者

    1. ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';