为什么需要其他用户

安装完MYSQL后,有一个root用户可以管理数据库,但有时候一个用户并不需要和root用户一样拥有全部权限,我们只希望他处理特定的某个数据库,只拥有某些操作的权限。

先用root进入mysql操作命令行
1.mysql -u root -p
2.输入root用户密码

创建用户指令:

CREATE USER account IDENTIFIED BY ‘password’;
其中一个account组成为username@hostname,前者是用户名,后者是机器名,表示哪些机器可以连接该mysql服务。
如:

create user test@localhost IDENTIFIED BY ‘Test123_’;

MYSQL TUTORIAL(二)  用户管理、权限管理_root用户


创建了一个本机MYSQL用户test,密码为Test123_

切换到test用户
使用指令:
create database member;
报错
ERROR 1044 (42000): Access denied for user ‘test’@‘localhost’ to database ‘member’
此处因为没有授权。

MYSQL的常用权限为:
ALL PRIVILEGES: It permits all privileges to a new user account.
CREATE: It enables the user account to create databases and tables.
DROP: It enables the user account to drop databases and tables.
DELETE: It enables the user account to delete rows from a specific table.
INSERT: It enables the user account to insert rows into a specific table.
SELECT: It enables the user account to read a database.
UPDATE: It enables the user account to update table rows.

授权语句:

GRANT CREATE, SELECT, INSERT ON * . * TO test@localhost;

ON后边表示区别的具体的某数据库,GRANT 后是权限名。

如:给刚才创建的用户CREATE权限

*.*匹配符,授权所有数据库

MYSQL TUTORIAL(二)  用户管理、权限管理_数据库_02


完成授权后需要用下面指令进行更新

FLUSH PRIVILEGES;

查看用户权限指令:
show GRANTS for username@hostname;

mysql> show GRANTS for test@localhost;
 ±------------------------------------------+
 | Grants for test@localhost |
 ±------------------------------------------+
 | GRANT CREATE ON . TO test@localhost |
 ±------------------------------------------+
 1 row in set (0.00 sec)mysql> show GRANTS for root@localhost;
 ±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | Grants for root@localhost |
 ±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | GRANT 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, CREATE ROLE, DROP ROLE ON . TO root@localhost WITH GRANT OPTION |
 | GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON . TO root@localhost WITH GRANT OPTION |
 | GRANT PROXY ON ‘’@’’ TO ‘root’@‘localhost’ WITH GRANT OPTION |
 ±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 3 rows in set (0.00 sec)

查询所有用户

select user from mysql.user;

MYSQL TUTORIAL(二)  用户管理、权限管理_root用户_03


删除用户指令

删除刚才创建的test用户

DROP user test@localhost;

Query OK, 0 rows affected (0.01 sec)