1、登录mysql
mysql -u root -p
2、查看现有用户
mysql> select host,user,authentication_string from mysql.user;
+-----------+---------------+-------------------------------------------+
| host | user | authentication_string |
+-----------+---------------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
3、新建用户
格式:create user "username"@"host" identified by "password";
mysql> create user "TopABu.com"@"localhost" identified by "123456";
Query OK, 0 rows affected (0.01 sec)
mysql> create user "TopABu.com"@"192.168.71.10" identified by "123456";
Query OK, 0 rows affected (0.01 sec)
mysql> create user "TopABu.com"@"%" identified by "123456";
Query OK, 0 rows affected (0.01 sec)
解释
- host=localhost:本地登录
- host=ip地址:ip地址登录
- host=%:为外网ip地址、任意地址登录,即远程访问mysql
4、删除用户
格式:drop user "username"@"host";
5、授权
格式:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';
1. grant命令说明
- privileges :权限列表
可以是all privileges:所有权限 也可以是select,insert,update,delete 等权限,多个权限的名词,相互之间用逗号分开
- on:用来指定权限针对哪些库和表
- *.*:前面的*号指定数据库名,后面的*指定表名
- to:表示将权限赋予某个用户
topabu@localhost,表示topabu用户,@后面接限制的主机,可以是ip、ip段、域名以及%。 需要注意的是,这里的%有的版本是不支持的,遇到这个问题就再加一个localhost的用户就可以了
- identified by:指定用户的登录密码,可省略该项
- with grant option:表示该用户可以将自己的权限授权给别人
2. 授权原则说明
- a、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
- b、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
- c、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
- d、为每个用户设置满足密码复杂度的密码。
- e、定期清理不需要的用户。回收权限或者删除用户。
mysql> grant all privileges on *.* to "TopABu.com"@"%" identified by "123456";
Query OK, 0 rows affected, 1 warning (0.00 sec)
3. 更新权限列表
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
6、查看权限
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
查看某个用户的权限
mysql> show grants for 'TopABu.com'@'%';
+-------------------------------------------------+
| Grants for TopABu.com@% |
+-------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'TopABu.com'@'%' |
+-------------------------------------------------+
1 row in set (0.00 sec)
7、删除权限
格式:revoke privileges on databasename.tablename from 'username'@'host';
mysql> revoke all privileges on *.* from 'TopABu.com'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'TopABu.com'@'%';
+----------------------------------------+
| Grants for TopABu.com@% |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'TopABu.com'@'%' |
+----------------------------------------+
1 row in set (0.00 sec)
8、更改用户名
mysql> rename user 'TopABu.com'@'%' to 'www.topabu.com'@'%';
Query OK, 0 rows affected (0.00 sec)
9、修改密码
-
- 用set password命令
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); Query OK, 0 rows affected (0.00 sec)
-
- 用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
[root@master ~]# mysqladmin -uroot -p123456 password 1234abcd
-
- 用update直接编辑user表
10、删除数据库
普通删除
drop database DataBaseName
强制删除
drop database if exists DataBaseName
11、MYSQL权限详细分类:
全局管理权限:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录,其它什么也不允许做。
文章评论