今天在开始一个新项目的时候遇到了一个问题, 原有的服务器上有很多数据库而这个新的项目有许多新人加入,对开发不是很熟悉,所以为了防止旧的数据库出现问题,就准备新建用户和数据库让这个新的用户只能访问新建的数据库,不能访问其它的数据库.
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):
1.新建用户
1.1 登录MYSQL(登陆的账户必须是拥有最高权限的账户):
@>mysql -u root -p
@>密码
1.2 创建用户:
CREATE USER 'guest2'@'%' IDENTIFIED BY '123456';
新建一个用户名为guest2的用户,密码为123456,%表示可以远程连接数据库
tips:
【原因】
原来MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。
使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。影响的语句和函数有:create user,grant,set password,password(),old password。所以可以将密码设置为“字母 + 数字”的形式。
修改后创建成功。
1.3 然后登录一下:
mysql>exit;
@>mysql -u test -p
@>输入密码
mysql>登录成功
2.为用户授权
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录:
@>mysql -u root -p
@>密码
2.2 首先为用户创建一个数据库(testDB):
mysql>create database testDB;
2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限,本次我们使用的就是这个):
mysql>GRANT ALL PRIVILEGES ON testDB.* TO 'guest2'@'%' IDENTIFIED BY 'guest123456' WITH GRANT OPTION;
mysql>flush privileges;//刷新系统权限表
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2.4 如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on testDB.* to guest2@localhost identified by 'guest123456';
mysql>flush privileges; //刷新系统权限表
2.5 授权test用户拥有所有数据库的某些权限:
mysql>grant select,delete,update,create,drop on *.* to guest2@"%" identified by "guest123456";
//test用户对所有数据库都有select,delete,update,create,drop 权限。
//@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)
//对localhost授权:加上一句grant all privileges on testDB.* to guest2@localhost identified by 'guest123456';即可。
3. 删除用户(需要登陆最高权限的账号)
DROP USER 'a'@'%';