利用root用户远程登录创建mysql触发器问题记录
远程数据库服务器地址192.168.1.99,启动sqlyog时,做如下设置
设置好了以后,点击 进行连接测试,如能连接成功,则出现如下提示信息
然后点击 按钮,进入如下界面
选择一个数据库进行操作,如上图以数据库tt为例进行操作,为测试方便,建表test1和test2(具体过程省略)
表建好以后我们就可以开始创建触发器了,右键Triggers,选择Create Trigger…
弹出一个对话框,让我们输入触发器的名称,输入完以后点击Create按钮
创建以后出现如下代码
修改代码后如下(注意第6行,更改表名称的时候要把<>去掉,不然会报错),
具体触发器实现什么功能就不说了,一看代码就明白
代码修改完以后,点击Execute All Queries按钮,如下图
执行过后是什么结果呢,并没有执行成功,而是出现了如下的错误提示信息
提示user 'root'@'LUISYANG' 没有创建触发器的权限
既然没有权限,那我们给它分配个权限就可以了,首先用select current_user;命令查看当前登录用户
显示用户为root@%
然后用show grants;命令显示当前用户所具有的权限,仔细查阅后确实没有创建触发器的权限,
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*DC450F900E733138B088F8D9CAA3703758366B04' WITH GRANT OPTION
找到原因,剩下的就是给用户分配权限的问题了,在服务器上使用如下命令给用户'root’@’%’分配权限
mysql>grant all privileges on *.* to ‘root’@’%’ identified by ‘登录密码′;
mysql>flush privileges;
执行完命令以后,重启一下mysql服务,然后再到运程客户端执行show grants;命令,显示如下信息
显然该用户已经具有了所有权限,这时再来执行上面创建触发器的语句,提示执行成功
我们点击Triggers,已经能看到我们刚才所建的触发器了
下面我们来测试刚才创建的触发器,在表test1中执行添加,并查询数据的操作
然后执行SELECT * FROM test2;操作,出现如下结果,说明我们的触发器已经可以使用了
sqlyog创建触发器的介绍到此结束。