TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
情景:我在mac的终端下用SSH操作虚拟机中的centos,mysql运行在centos中
mysql -u root -p
用root登录mysql后
使用
- grant all privileges on db1.* to user1@"%" identified by "user1" with grant option;
复制代码
意为:给所有主机登录(%指任意主机)的用户名为user1(密码为user1,identified by后接密码) 授予操作数据库db1下所有数据表(db1.*指db1所有数据表)的所有权限。
此时
- select * from mysql.user \G;
复制代码
发现user1的权限还是N,即上面授予操作无效,为什么呢?
原因:
这时在mysql下root登录,执行show grants;显示
- grant all privileges on *.* to "root"@"localhost" xxxxxxxxxxxx
复制代码
对于本地主机下登录的root用户才有所有权,而这时我是在mac的终端下ssh操作虚拟机中的mysql,这时的root用户当然没有所有权。
解决方法:回到虚拟机中登录mysql的root操作。
在虚拟机mysql中添加:
- grant all privileges on *.* to "root"@"%" identified by "root的密码" with grant option;
复制代码
添加后再用
发现多了一行,内容是用户为root,主机为%,拥有所有权限。
这时就可以回到mac在mysql登录root操作了。
如果这时还不行,可以用以下方法:
在mac中打开mysqlworkbench(需要另外下载),用mysql root用户远程登录虚拟机的mysql。
我这时虚拟机的地址是192.168.20.101(确保虚拟机的防火墙关了或者开启了mysql的端口3306)。
登录后在左上角选择Users and Privileges,可以添加用户,并在Administration Roles选卡添加用户权限。
 |
|