一. 设置root用户密码

刚安装的msyql没有设置root密码, 可以使用两种方式来设置:

1. 使用mysqladmin命令

第一次设置密码可以使用命令: mysqladmin -u root password 密码

mysql创建用户与授权

使用mysqladmin 修改密码: mysqladmin -uroot -p旧密码 password 新密码, 注意这里-u -p后面不能有空格.

2. 用set password命令

登录mysql, 输入: set password for '用户名'@'host' = password('密码'); 

如下例: 将yii2用户密码修改为test123

mysql创建用户与授权

二. 创建用户

    1. 登录mysql,  使用命令: create user '用户名'@'host' identified by '密码';

    其中host指定用户在哪个主机上可以登录, 如果本地登录设置host为localhost, 如果希望该用户可以从任意远程主机登录,则设置host为 '%'. 

    注意: 新安装的msyql在设置用户host为 % ,发现无法从远程登录, 这是因为新安装的msyql, 有一个默认的用户,用户名空字符' ', host为localhost的匿名账户, 匿名用户账户的Host列值比'用户名 '@'%' 账户更具体,在user表中排在前面, 所以此时远程无法登陆, 解决方法: 删除掉匿名账户, drop user ''@'localhost';  

下图标注即为匿名账户

mysql创建用户与授权

    2. 赋予用户权限同时创建用户

    使用root登陆mysql, 使用命令:

    grant all privileges on *.* to '用户名'@'host' identified by '密码'; 

    flush privileges;

    命令中*.* 指的是所有数据库下所有数据表, 如果要指定某个数据下某张表, 例如: 指定test数据库下的user表, 则写为 test.user+

三. 授权

    命令: grant 权限 on 数据库名.数据表名 to  '用户名'@'host' ;  flush privileges;

    权限包括 insert,select ,update 等, 如果要赋予所有权限则设为 all 

    如果要给用户所有数据库下所有表的权限则 on 后面 跟 *.* ,  如果要给用户某个数据库下所有表的权限, 则on后跟 库名.*

注意:

    用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

 GRANT 权限 ON 库名.表名 TO 'username'@'host' WITH GRANT OPTION;

 四. 撤销用户权限

REVOKE 权限 ON 库名.表名 FROM 'username'@'host';

 

 

相关文章: