创建用户
语法格式
创建一个名为'username'的用户,并将其密码设置为'password'。可以将'localhost'替换为允许用户访问的主机名或IP地址。
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
如果要为用户授予特定权限,例如访问特定数据库或执行特定操作
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
如果您希望用户具有全局权限,例如访问所有数据库和执行任何操作
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
刷新权限以使更改生效
FLUSH PRIVILEGES;
-- 创建一个用户mrloam,密码是123,'%'表示该用户可以从任何主机连接到数据库服务器。
root@mysqldb 14:46: [(none)]> CREATE USER 'mrloam'@'%' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.12 sec)
权限
GRANT 权限列表 ON 库名 TO 用户名@"客户端地址" IDENTIFIED BY "密码" [ WITH GRANT OPTION ];
权限列表:
SELECT 允许用户从表中检索数据
INSERT 允许用户向表中插入数据
UPDATE 允许用户更新表中的数据
CREATE 允许用户创建数据库和表
DELETE 允许用户从表中删除数据
DROP 允许用户删除数据库和表
RELOAD 允许用户重新加载权限表
GRANT 允许用户授予其他用户权限
INDEX 允许用户在表中创建索引。
ALTER 允许用户修改表结构。
SELECT, INSERT, DELETE,DROP, UPDATE, CREATE, 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
库名的表示方式:
*.*
database.*
database.table
客户端地址的表示方式
%
192.168.1.%
192.168.1.8
localhost
WITH GRANT OPTION :有授权权限 ,可选项。可以让该用户将该权限传递给其他用户。
权限撤销
REVOKE 权限列表 ON 库名 FROM 用户@"客户端地址" ;
-- 授权mrloam用户能通过任意主机连接访问 d1库下的所有表,并拥有所有的权限。
root@mysqldb 14:53: [(none)]> GRANT ALL PRIVILEGES ON d1.* TO 'mrloam'@'%';
Query OK, 0 rows affected (0.00 sec)
-- 创建一个用户 test ,并授予对d1库下的表有查询、写入、修改,删除的权限。
root@mysqldb 14:59: [(none)]> CREATE USER 'test'@'%' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)
root@mysqldb 15:01: [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON d1.* TO 'test'@'%';
Query OK, 0 rows affected (0.00 sec)
--
-- 注意
-- 授予有创建表和库的权限,“%”符号表示对所有非本地主机授权,不包括localhost。
-- 如果需要授权给本机和非本地主机授权,需要授予'localhost'的权限,然后授予'%'的权限。
root@mysqldb 15:15: [(none)]> GRANT CREATE ON d1.* TO 'test'@'localhost';
Query OK, 0 rows affected, 2 warnings (0.01 sec)
root@mysqldb 15:03: [(none)]> GRANT CREATE ON d1.* TO 'test'@'%';
Query OK, 0 rows affected (0.00 sec)
-- 查看权限
root@mysqldb 15:15: [(none)]> SHOW GRANTS FOR 'test'@'%';
+----------------------------------------------------------------------+
| Grants for test@% |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON `d1`.* TO 'test'@'%' |
+----------------------------------------------------------------------+
2 rows in set (0.00 sec)
root@mysqldb 15:21: [(none)]> SHOW GRANTS FOR 'test'@'%';
+----------------------------------------------------------------------+
| Grants for test@% |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON `d1`.* TO 'test'@'%' |
+----------------------------------------------------------------------+
2 rows in set (0.00 sec)
-- 移除权限
root@mysqldb 15:57: [(none)]> REVOKE SELECT, INSERT, UPDATE, DELETE, CREATE ON d1.* FROM 'test'@'%';
Query OK, 0 rows affected (0.00 sec)
root@mysqldb 15:59: [(none)]> REVOKE SELECT, INSERT, UPDATE, DELETE, CREATE ON d1.* FROM 'test'@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)
-- 删除USAGE权限后,该用户将无法登录。USAGE权限表示只允许用户登录到数据库,不能执行任何其他操作。
root@mysqldb 16:04: [(none)]> REVOKE USAGE ON *.* FROM 'test'@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)
root@mysqldb 16:05: [(none)]> REVOKE USAGE ON *.* FROM 'test'@'%';
Query OK, 0 rows affected (0.00 sec)
-- 删除用户
root@mysqldb 16:05: [(none)]> DROP USER 'test'@'%';
Query OK, 0 rows affected (0.00 sec)
root@mysqldb 16:08: [(none)]> DROP USER 'test'@'localhost';
Query OK, 0 rows affected (0.00 sec)