目的:保证账户更安全,更稳定。
指定用户权限,指定用户可以用哪一个数据库,甚至可以指定你可以用哪一个数据库里的
哪一个表,甚至可以指定你是否可以用select,update等功能。
有一个数据库叫mysql,里边有张表叫user,
select user,host,authentication_string from user,
user指用户,host指该用户可以从哪里登录(如果host是“%”只可以从任意地方登录),
authentication_string是加密后的密码
创建用户并授权:
step1:使用root登录(有root权限的用户)
mysql -u root -p
step2: 创建用户并授予权限
grant 权限 on 数据库名.属性(某表)to '用户名' @'localhost(或者%)' identified by '密码';
例如:grant select on jing_dong.* to 'laowang'@'localhost' identified by '123456'
可以操作数据库的所有表,方式如‘jing_dong.*';
%表示此账户可以使用任何ip的主机登录访问此数据,可以设成具体的ip,表示只允许本机或
者特定主机访问。
查看用户权限:show grants for 用户名@访问主机
step3:退出root的登录
quit
step4:使用老王账户登录
mysql -ulaowang -p123456
老王只能用select
修改权限:grant 权限名称 on 数据库名 to 账户@主机 with grant option
(如果权限名称是 all privileges 则是赋予全部权限)
修改权限名称后需要flush privileges,即刷新权限
修改密码:
update user set authentication_string=password('要设的密码') where user='用户名';
远程登陆(危险慎用)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到语句bind_address=127.0.0.1前加注释符
重启mysql:sudo service mysql restart
老王如果主机位置为%,则他可以登录
远程登陆有危险,不建议使用。
删除账户:
drop user '用户名‘ @’主机'