1、登录mysql
[root@zadce29s8xdazvt1cmel22z ~]# mysql -uroot -p
Enter password:
mysql>
2、查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
mysql>
3、查看现有用户
mysql> select host,user,authentication_string from mysql.user;
+-----------+---------------+-------------------------------------------+
| host | user | authentication_string |
+-----------+---------------+-------------------------------------------+
| localhost | root | *3FC37DE73C15FD3379955B89CA2222E21DF7F734 |
| localhost | mysql.session | *AHISISNOTTVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | *AHISISNOTAXALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+---------------+-------------------------------------------+
3 rows in set (0.00 sec)
mysql>
4、创建用户
mysql> create user 'test'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
eg:
1.mysql->create user 'username'@'localhost' identified by '123456';
2.mysql->create user 'username'@'192.168.0.1' identified by '123456';
3.mysql->create user 'username'@'%' identified by '123456';
localhost 为本地登录用户
用户名@IP地址 用户只能该IP下才能访问
用户名@192.168.1.% 用户只能在改IP段下才能访问(通配符%表示任意)
用户名@% 用户可以再任意IP下访问(默认IP地址为%)
5、分配权限
grant 权限 on 数据库.表 to '用户'@'IP地址' identified by 'password';
//all privileges 除grant外的所有权限
select 仅查权限
select,insert 查和插入权限...
usage 无访问权限
alter 使用alter table
alter routine 使用alter procedure和drop procedure
create 使用create table
create routine 使用create procedure
create temporary tables 使用create temporary tables
create user 使用create user、drop user、rename user和revoke all privileges
create view 使用create view
delete 使用delete
drop 使用drop table
execute 使用call和存储过程
file 使用select into outfile 和 load data infile
grant option 使用grant 和 revoke
index 使用index
insert 使用insert
lock tables 使用lock table
process 使用show full processlist
select 使用select
show databases 使用show databases
show view 使用show view
update 使用update
reload 使用flush
shutdown 使用mysqladmin shutdown(关闭MySQL)
super ??使用change master、kill、logs、purge、master和set global。还允许mysqladmin????调试登陆
replication client 服务器位置的访问
replication slave 由复制从属使用
grant all on *.* to 'username'@'%' identified by '123456';
补充说明:
1. GRANT命令说明:
priveleges(权限列表),可以是all priveleges, 表示所有权限,也可以是select、update等权限,多个权限的名词,相互之间用逗号分开。
on用来指定权限针对哪些库和表。
*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
to 表示将权限赋予某个用户, 如 testa@localhost表示testa用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是 在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。
identified by指定用户的登录密码,该项可以省略。
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个select权限,然后又给用户添加一个insert权限,那么该用户就同时拥有了select和insert权限。
2.授权原则说明:
权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:
a、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
b、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
c、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
d、为每个用户设置满足密码复杂度的密码。
e、定期清理不需要的用户。回收权限或者删除用户。
6、刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
7、回收权限
revoke privileges on database.tablename from 'username'@'host';
注意:privileges :用户的操作权限如:select,update,delete,insert等,若要授予所有权则使用"all"
8、修改用户名
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
9、修改密码
set password for '用户名'@'IP地址' = Password('新密码');
如果是修改当前用户的密码则使用:SET PASSWORD = PASSWORD('新密码');
10、删除用户
drop user '用户名'@'IP地址';
友情提示:每做完一次操作注意刷新
flush privileges;