今天使用Navicat给MySQL创建用户,并赋予权限时,无论怎么设置,都会显示所有的表。将问题记录下来,方便之后的查询

1、首先使用root用户登录数据库

mysql赋予用户database mysql赋予用户建表权限_选项卡

2、点击 “用户” 选项,新建用户

mysql赋予用户database mysql赋予用户建表权限_数据库_02

3、在 “常规选项卡” 中填入需要创建用户的用户名、密码

mysql赋予用户database mysql赋予用户建表权限_数据库_03


需要注意的是,主机这一选项,若是填安装MySQL机器的IP地址,那么只能在这台机器的本地登陆这个新创建的这个用户,其他机器上将无法。若要在任何机器上登陆,需要填写%(百分号)

4、切换到 “服务器权限” 选项卡,若要只展示某个数据库(我们新建用户的目的,就是想将部分数据库、表展示给该用户),则这些选项一律不勾选

mysql赋予用户database mysql赋予用户建表权限_mysql赋予用户database_04


如果不小心勾选了这一页的某个选项,那么新创建的用户将会看到该机器上MySQL里的所有的数据库、表

5、切换到 “权限选项卡” ,点击添加权限

mysql赋予用户database mysql赋予用户建表权限_mysql赋予用户database_05


如下图所示:设置需要展示的库(表),以及分配给该用户的权限(查询、展示该视图)

mysql赋予用户database mysql赋予用户建表权限_MySQL_06

6、最后点击 “保存” 按钮,就成功了

mysql赋予用户database mysql赋予用户建表权限_MySQL_07

7、使用刚才创建的用户名密码,就可以登陆

mysql赋予用户database mysql赋予用户建表权限_mysql赋予用户database_08


可以看出,只会显示在第5步设置的视图,并且只有查询的权限

mysql赋予用户database mysql赋予用户建表权限_选项卡_09

8、遇到的问题

(1)无论怎么设置,都会展示出来所有的表

详见第4步,是因为勾选了 服务器权限选项卡 下某个选项,取消勾选即可

(2)登陆该用户,打开某个库,显示报错信息

mysql赋予用户database mysql赋予用户建表权限_选项卡_10


出现这种问题的原因是,参照第4步 权限选项卡 ,没有将SelectShow View 全部勾选中(注意:必须都勾选,才会不报错)