MySQL使用root用户给某用户分配权限报错:Access denied for user 'root'@'%' to database 'xxx'

背景:

          今天给朋友制作学年设计时,首先想到的是在自己的服务器上创建一个用户和数据库方便后续的使用(使用Navicat远程登录)。在给新用户赋予新数据库的操作权限时,报错 Access denied for user 'root'@'%' to database 'xxx',然后尝试直接使用SQL命令赋权,仍然报错。在网上搜寻良久,终于发现问题所在。

 

问题解释:

          root用户在远程连接的MySQL上面,没有这个新数据库的授权,在本地使用MySQL应该不存在这个问题。

 

解决方案:

          1.在MySQL所在的主机中打开命令提示符,进入MySQL。

     MySQL使用root用户给某用户分配权限报错:Access denied for user 'root'@'%' to database 'xxx'_第1张图片

     mysql -uroot -pxuanbing2241  是mysql的登录命令,其中:
     -uroot就是默认的超级管理员帐号root
     -p后面的就是用户root的密码xuanbing2241

     

      2.开启mysql帐户远程登录,并授权

       输入
       grant all PRIVILEGES on mysql.* to root@'192.168.1.100'  identified by 'xuanbing2241';

       该命令的参数分析:

       all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如                               

       select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

       mysql.* 表示上面的权限是针对于哪个表的,mysql指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部         数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表             名”。

       root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

       192.168.1.100   表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。

        xuanbing2241 为用户的密码。

       即如果想不限制IP地址,修改所有数据表允许远程连接的命令是:

       grant all PRIVILEGES on *.* to root@'%'  identified by 'xuanbing2241';

     

     3.输入命令后,还需要执行下面的语句,方可生效。

       flush privileges; 

       MySQL使用root用户给某用户分配权限报错:Access denied for user 'root'@'%' to database 'xxx'_第2张图片

 

 

 

你可能感兴趣的:(数据库,MySQL)