一. 设置root用户密码
刚安装的msyql没有设置root密码, 可以使用两种方式来设置:
1. 使用mysqladmin命令
第一次设置密码可以使用命令: mysqladmin -u root password 密码
使用mysqladmin 修改密码: mysqladmin -uroot -p旧密码 password 新密码, 注意这里-u -p后面不能有空格.
2. 用set password命令
登录mysql, 输入: set password for '用户名'@'host' = password('密码');
如下例: 将yii2用户密码修改为test123
二. 创建用户
1. 登录mysql, 使用命令: create user '用户名'@'host' identified by '密码';
其中host指定用户在哪个主机上可以登录, 如果本地登录设置host为localhost, 如果希望该用户可以从任意远程主机登录,则设置host为 '%'.
注意: 新安装的msyql在设置用户host为 % ,发现无法从远程登录, 这是因为新安装的msyql, 有一个默认的用户,用户名空字符' ', host为localhost的匿名账户, 匿名用户账户的Host列值比'用户名 '@'%' 账户更具体,在user表中排在前面, 所以此时远程无法登陆, 解决方法: 删除掉匿名账户, drop user ''@'localhost';
下图标注即为匿名账户
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';