mysql definer设置为root_mysql提示The user specified as a definer ('root'@'%') does not exist

2、执行赋权限操作,然后刷新权限

mysql >grant all privileges on *.* to root@"%" identified by "Passwd" ;

mysql >flush privileges;

其他文章:

今天想用navicat远程连接虚拟机中的MySQL数据库,一直连不上,在网上搜索了一下,发现原因是MySQL对远程用户登陆的授权问题。这里说一下我的解决方法。(本人小白)

首先,我用navicat去远程链接我虚拟机中的MySQL,链接测试失败。

然后在虚拟机中查看网络端口信息:

#netstat -ntpl

ca0f10a164cd77c7f65e4f1de635bebd.png

之后查看了防火墙的状态,发现3306端口的数据包都是丢弃状态

#iptables -vnL

d7aa2e1a62a1cbfdc07ea92938d98963.png

这里要清除防火墙中链中的规则

#iptables -F

在这之后,我又远程链接了一下MySQL,出现了以下错误,查了一下,是因为MySQL没有允许远程登陆,所以要授权MySQL远程登陆。

b85b3bd5cfe867c1a0121a2b13f77424.png

这里先说一下MySQL登陆:  格式: mysql -h主机地址 -u用户名-p用户密码

1、例1:连接到本机上的MYSQL    找到mysql的安装目录,一般可以直接键入命令mysql -uroot -p,回车后提示你输密码,输入密码,直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>    2、连接到远程主机上的MySQL    假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:    mysql -h10.0.0.1 -uroot -p123   (注:p与123(密码)之间最好不加空格,其它也一样)    3、退出MySQL命令   exit (回车)

最后授权MySQL,允许远程用户登录访问MySQL

手动增加可以远程访问数据库的用户。  方法一、本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改为"%"  #mysql -u root -proot  mysql>use mysql;  mysql>update user set host = '%' where user = 'root';  mysql>select host, user from user;

方法二、直接授权(推荐)  从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:  # mysql -u root -proot   mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;  操作完后切记执行以下命令刷新权限     FLUSH PRIVILEGES

这时再通过navicat远程链接MySQL,链接测试,如下图,成功。

70064134b6a8ed9ac8125cc2af42178b.png

posted on 2018-04-22 22:04 长戟十三千 阅读(203) 评论(0)  编辑 收藏 引用 所属分类: 编程技巧随笔

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值