目录
一,用户管理操作
1,创建用户
2,查询用户
3,修改密码
4,删除用户
二,数据库权限
1,用户授权
2,回收权限
一,用户管理操作
1,创建用户
--创建用户
mysql> create user 'haha'@'localhost' identified by 'Aa`123456789';
Query OK, 0 rows affected (0.00 sec)--查看密码设置要求
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
2,查询用户
--查询用户
mysql> select user,host,authentication_string from user;
+---------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *8611C16D0E703426E9B929BFF94C2EE54BCFBB50 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| haha | localhost | *CDA66FDE5DF8DD89B2D841506F5E19874A520F10 |
+---------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)
3,修改密码
--修改自己用户密码1
mysql> alter user 'root'@'localhost' identified by 'BBB456ttt///';
Query OK, 0 rows affected (0.00 sec)--修改自己用户密码2
mysql> set password=password('Aa`123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> select user,host,authentication_string from user;
+---------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *C19FBC6F8304BB529134B86A731E8B4D7C53AC64 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| haha | localhost | *CDA66FDE5DF8DD89B2D841506F5E19874A520F10 |
+---------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)--修改指定用户密码1
mysql> alter user 'haha'@'localhost' identified by 'ZZZxxx///111';
Query OK, 0 rows affected (0.00 sec)--修改指定用户密码2
mysql> set password for 'haha'@'localhost'=password('SSS876aaa===');
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> select user,host,authentication_string from user;
+---------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *DA036C8A521E3E8C8A75FCE9D505851C79ECE89B |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| haha | localhost | *EE4C67CF5D9018A709F9799C34128C531B003476 |
+---------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)
4,删除用户
mysql> drop user 'haha'@'localhost';
Query OK, 0 rows affected (0.00 sec)mysql> select user,host,authentication_string from user;
+---------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *DA036C8A521E3E8C8A75FCE9D505851C79ECE89B |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
二,数据库权限
MySQL数据库提供的权限列表:
1,用户授权
刚创建的用户没有任何权限。需要给用户授权。
语法:
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
说明:
权限列表。多个权限用逗号分开
grant select on ... --赋予查询权限
grant select, delete, create on .... --赋予查询,删除,创建,多个权限
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有操作权限
对象名。可以是库中的某一个对象(表,视图,存储过程等)
一次赋予只能选择单一对象(表,视图,存储过程等)
或者使用 * 表示选择数据库中的所有数据对象
identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
--root用户
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| 2025_db |
| bin_db |
| bit_index |
| db1 |
| db10 |
| db11 |
| db12 |
| db13 |
| db2 |
| db3 |
| db4 |
| db5 |
| db6 |
| db7 |
| db8 |
| db9 |
| gc_db |
| mysql |
| performance_schema |
| scott |
| sys |
+--------------------+
22 rows in set (0.00 sec)--赋予haha用户查询db1数据库所有对象的权限
mysql> grant select on db1.* to 'haha'@'localhost';
Query OK, 0 rows affected (0.00 sec)--赋予haha用户所有操作db1数据库所有对象的权限
mysql> grant all on db2.* to 'haha'@'localhost';
Query OK, 0 rows affected (0.00 sec)--赋予haha用户插入/更新/删除db1数据库所有对象的权限
mysql> grant insert,update,delete on db1.* to 'haha'@'localhost';
Query OK, 0 rows affected (0.00 sec)--赋予haha用户所有操作db2数据库所有对象的权限
mysql> grant all on db2.* to 'haha'@'localhost';
Query OK, 0 rows affected (0.00 sec)mysql> use db3;
Database changed
mysql> show tables;
+---------------+
| Tables_in_db3 |
+---------------+
| birthday |
| tt1 |
| tt2 |
| tt3 |
| tt4 |
| tt5 |
| tt6 |
| tt7 |
| votes |
+---------------+
9 rows in set (0.00 sec)--赋予haha用户所有操作db3数据库tt1表的权限
mysql> grant all on db3.tt1 to 'haha'@'localhost';
Query OK, 0 rows affected (0.00 sec)--赋予haha用户所有操作db3数据库tt2表的权限
mysql> grant all on db3.tt2 to 'haha'@'localhost';
Query OK, 0 rows affected (0.00 sec)--刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)--haha用户
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)--获取查询权限
mysql> show grants;
+-----------------------------------------------+
| Grants for haha@localhost |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'haha'@'localhost' |
| GRANT SELECT ON `db1`.* TO 'haha'@'localhost' |
+-----------------------------------------------+
1 rows in set (0.00 sec)--只能查询
mysql> select * from person;
+------+
| name |
+------+
| A |
| B |
| c |
| d |
+------+
4 rows in set (0.00 sec)--不能进行其他操作
mysql> insert into person values('E');
ERROR 1142 (42000): INSERT command denied to user 'haha'@'localhost' for table 'person'
mysql> update person set name='letter';
ERROR 1142 (42000): UPDATE command denied to user 'haha'@'localhost' for table 'person'
mysql> delete from person;
ERROR 1142 (42000): DELETE command denied to user 'haha'@'localhost' for table 'person'--获取更多权限
mysql> show grants;
+-----------------------------------------------------------------------------+
| Grants for haha@localhost |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'haha'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, DROP ON `db1`.* TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db2`.* TO 'haha'@'localhost' |
+-----------------------------------------------------------------------------+
3 rows in set (0.00 sec)mysql> insert into person values('E');
Query OK, 1 row affected (0.00 sec)mysql> select * from person;
+------+
| name |
+------+
| A |
| B |
| c |
| d |
| E |
+------+
5 rows in set (0.00 sec)mysql> update person set name='letter';
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5 Changed: 5 Warnings: 0mysql> select * from person;
+--------+
| name |
+--------+
| letter |
| letter |
| letter |
| letter |
| letter |
+--------+
5 rows in set (0.00 sec)mysql> select * from person;
Query OK, 0 rows affected (0.00 sec)mysql> show grants;
+-----------------------------------------------------------------------------+
| Grants for haha@localhost |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'haha'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, DROP ON `db1`.* TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db2`.* TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db3`.`tt1` TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db3`.`tt2` TO 'haha'@'localhost' |
+-----------------------------------------------------------------------------+
5 rows in set (0.00 sec)mysql> use db3;
Database changed
mysql> show tables;
+---------------+
| Tables_in_db3 |
+---------------+
| tt1 |
| tt2 |
+---------------+
2 rows in set (0.00 sec)
2,回收权限
有授权操作就会有回收操作,语法基本一样。
语法:
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
--root用户
mysql> revoke all on db2.* from 'haha'@'localhost';
Query OK, 0 rows affected (0.00 sec)--haha用户
mysql> show grants;
+-----------------------------------------------------------------------------+
| Grants for haha@localhost |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'haha'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, DROP ON `db1`.* TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db2`.* TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db3`.`tt1` TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db3`.`tt2` TO 'haha'@'localhost' |
+-----------------------------------------------------------------------------+
5 rows in set (0.00 sec)mysql> show grants;
+-----------------------------------------------------------------------------+
| Grants for haha@localhost |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'haha'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, DROP ON `db1`.* TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db3`.`tt1` TO 'haha'@'localhost' |
| GRANT ALL PRIVILEGES ON `db3`.`tt2` TO 'haha'@'localhost' |
+-----------------------------------------------------------------------------+
4 rows in set (0.00 sec)mysql> use db2;
ERROR 1044 (42000): Access denied for user 'haha'@'localhost' to database 'db2'
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| db3 |
+--------------------+
3 rows in set (0.00 sec)