建立trigger115权限不足无法下载,求教了

Zabbix HAProxy Template
这是一个HAProxy的zabbix监控模板,HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy本身提供一个web页面可以显示haproxy的各种信息,方便管理员查看状态等。此次我采用socat(socat是netcat的扩展实现)这款开源软件通过haproxy的socks配合zabbix实现haproxy系统的状态监控。
一、安装socat
[root@haproxy01 ~]# wget http://www.dest-unreach.org/socat/download/socat-1.7.3.0.tar.bz2
[root@haproxy01 ~]# tar xzf socat-1.7.3.0.tar.gz
[root@haproxy01 ~]# cd socat-1.7.3.0
[root@haproxy01 ~]# ./configure
[root@haproxy01 ~]# make
[root@haproxy01 ~]# make install
[root@haproxy01 ~]# which socat ###安装完自动会在/usr/local/bin 创建执行程序。
/usr/local/bin/socat
二、开启haproxy sock
编辑haproxy配置文件在global下添加如下:
stats socket /usr/local/haproxy/haproxy.sock
# 重启haproxy
Haproxy 信息
[root@haproxy01 ~]# echo &show info& |socat /usr/local/haproxy/haproxy.sock stdio
Name: HAProxy
Version: 1.4.24
Release_date:
Process_num: 1
Uptime: 2d 1h00m47s
Uptime_sec: 176447
Memmax_MB: 0
Ulimit-n: 131102
Maxsock: 131102
Maxconn: 65535
Maxpipes: 0
CurrConns: 18
PipesUsed: 0
PipesFree: 0
Run_queue: 1
node: HAProxy01
description: haproxy server 01
Haproxy 状态
[root@CMHAProxy01 ~]# echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio
# pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,chkdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,rate,rate_lim,rate_max,check_status,check_code,check_duration,hrsp_1xx,hrsp_2xx,hrsp_3xx,hrsp_4xx,hrsp_5xx,hrsp_other,hanafail,req_rate,req_rate_max,req_tot,cli_abrt,srv_abrt,admin_stats,FRONTEND,,,0,1,311,0,0,0,,,,,OPEN,,,,,,,,,1,1,0,,,,0,0,0,1,,,,0,,0,0,,0,1,2918,,,
admin_stats,BACKEND,0,0,0,0,11,0,0,,0,0,0,0,UP,0,0,0,,0,,,1,1,0,,0,,1,0,,0,,,,0,0,0,0,0,0,,,,,0,0,
test,FRONTEND,,,0,2,74,0,0,0,,,,,OPEN,,,,,,,,,1,2,0,,,,0,0,0,3,,,,0,,0,0,,0,3,5402,,,
test,test1,0,0,0,1,,,,,0,0,0,0,UP,3,1,0,1,0,,,1,2,1,,,,2,L7OK,200,3,0,,0,0,0,,,,0,1,
test,test2,0,0,0,1,,,,,0,0,0,0,UP,3,1,0,0,0,,,1,2,2,,,,2,L7OK,200,3,0,,0,0,0,,,,0,0,
test,BACKEND,0,0,0,2,74,0,0,,0,0,0,0,UP,6,2,0,,0,,,1,2,0,,,,3,,,,0,,0,0,,,,,0,1,
看到这里大家都明白了,我们可以通过&show stat&返回的信息,过滤出我们想要得到的监控字段数据。这里我们主要取qcur(queue数量)、scur(session数量)、bin(入站流量)、bout(出站流量)、status(后端服务器状态)、downtime(宕机总时长)、check_status(健康检测状态),自定义key收集这些数据制作相应的item,如果你想监控更多信息可以取更多的字段数据。
大家看到这些字段数据使用&,&分隔,非常方便我们用awk来过滤数据,具体自定义key见代码。首先,我们需要建立一个HAProxy模版,然后建立发现规则,来发现这些后端服务器,这样每次haproxy添加服务的时候,zabbix就会自动发现这些后端服务器、自动建立item、自动建立Graph、自动建立Trigger,一切全部自动完成。
三、Step by Step
1、建立一个haproxy模版
2、建立发现规则
key shell如下:(这里有一点需要注意,就是haproxy.sock这个文件的权限问题,默认是644,单纯执行这个shell没问题,但如果需要zabbix用户去获取返回值的时候就会提示权限不足,所以我直接将haproxy.sock设置成了666,也可以设置visudo,我为了方便直接修改了这个文件权限)
[root@haproxy01 ~]# cat /usr/bin/has.discovery.sh
#!/bin/bash
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
printf '{\n'
printf '\t&data&:[\n'
export LINE=$(echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep -v &^#&|grep -v &^admin_stats&|awk -F &,& '{print $2}'|grep -v &^FRONTEND&|grep -v &^BACKEND&|grep -v &^$&|wc -l) ##(这里我过滤调admin_stats web管理台、FRONTEND前端、BACKEND后端 得到的是所有后端服务器的列表)
export N=0
#printf '\t\t{\n'
for i in $(echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep -v &^#&|grep -v &^admin_stats&|awk -F &,& '{print $2}'|grep -v &^FRONTEND&|grep -v &^BACKEND&);
do printf &\t\t\t{\&{#SNAME}\&:\&$i\&}&;
N=$(($N+1))
if [ $N -eq $LINE ]; ## 最后一行是不能加&,&的,所以需要if判断一下是否到了最后一行。
printf '\n'
printf ',\n'
printf ']}\n'
执行结果如下:(zabbix的发现规则就是要返回json格式的数据)
[root@haproxy01 haproxy]# sh /usr/bin/has.discovery.sh
{&{#SNAME}&:&test1&},
{&{#SNAME}&:&test2&},
{&{#SNAME}&:&testapi1&},
{&{#SNAME}&:&test51&},
{&{#SNAME}&:&test52&},
{&{#SNAME}&:&testclient1&},
{&{#SNAME}&:&testclient2&},
{&{#SNAME}&:&testmobile1&},
{&{#SNAME}&:&testmobile2&}
3、建立自定义key
+ Queue数量[qcur]
key shell如下:
[root@haproxy01 haproxy]# cat /usr/bin/ckey.ha.queue.sh
#!/bin/bash
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep &\&$1\&&|grep -v &^FRONTEND&|grep -v &^BACKEND&|awk -F &,& '{print $3}' ## 重点就是通过awk取哪个字段的数据
+ Session数量[scur]
[root@haproxy01 haproxy]# cat /usr/bin/ckey.ha.session.sh
#!/bin/bash
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep &\&$1\&&|grep -v &^FRONTEND&|grep -v &^BACKEND&|awk -F &,& '{print $5}'
+ 虚拟服务器入站流量[bin]
[root@haproxy01 haproxy]# cat /usr/bin/ckey.ha.bin.sh
#!/bin/bash
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep &\&$1\&&|grep -v &^FRONTEND&|grep -v &^BACKEND&|awk -F &,& '{print $9}'
+ 虚拟服务器出站流量[bout]
[root@haproxy01 haproxy]# cat /usr/bin/ckey.ha.bout.sh
#!/bin/bash
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep &\&$1\&&|grep -v &^FRONTEND&|grep -v &^BACKEND&|awk -F &,& '{print $10}'
+ 后端服务器状态[status]
[root@haproxy01 haproxy]# cat /usr/bin/ckey.ha.status.sh
#!/bin/bash
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep &\&$1\&&|grep -v &^FRONTEND&|grep -v &^BACKEND&|awk -F &,& '{print $18}'
+ 宕机总时长[downtime]
[root@haproxy01 haproxy]# cat /usr/bin/ckey.ha.downtime.sh
#!/bin/bash
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep &\&$1\&&|grep -v &^FRONTEND&|grep -v &^BACKEND&|awk -F &,& '{print $25}'
+ 健康检测状态[check_status]
[root@haproxy01 haproxy]# cat /usr/bin/ckey.ha.lastchk.sh
#!/bin/bash
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo &show stat& |socat /usr/local/haproxy/haproxy.sock stdio|grep &\&$1\&&|grep -v &^FRONTEND&|grep -v &^BACKEND&|awk -F &,& '{print $38}'
[root@haproxy01 haproxy]# cat /etc/zabbix/zabbix_agentd.d/HaProxy_status.conf
UserParameter=has.discovery,/usr/bin/has.discovery.sh
UserParameter=ckey.ha.bin[*],/usr/bin/ckey.ha.bin.sh $1
UserParameter=ckey.ha.bout[*],/usr/bin/ckey.ha.bout.sh $1
UserParameter=ckey.ha.downtime[*],/usr/bin/ckey.ha.downtime.sh $1
UserParameter=ckey.ha.lastchk[*],/usr/bin/ckey.ha.lastchk.sh $1
UserParameter=ckey.ha.queue[*],/usr/bin/ckey.ha.queue.sh $1
UserParameter=ckey.ha.session[*],/usr/bin/ckey.ha.session.sh $1
UserParameter=ckey.ha.status[*],/usr/bin/ckey.ha.status.sh $1
重启zabbix-agent
+ 验证一下:
[root@zabbixproxy01 ~]# zabbix_get -s 192.168.1.100 -k has.discovery
{&{#SNAME}&:&test1&},
{&{#SNAME}&:&test2&},
{&{#SNAME}&:&testapi1&},
{&{#SNAME}&:&test51&},
{&{#SNAME}&:&test52&},
{&{#SNAME}&:&testclient1&},
{&{#SNAME}&:&testclient2&},
{&{#SNAME}&:&testmobile1&},
{&{#SNAME}&:&testmobile2&}
[root@zabbixproxy01 ~]# zabbix_get -s 192.168.1.100 -k ckey.ha.status[test1]
其余的key验证效果大同小异,这里就不浪费篇幅一一列举了。
4、创建Graph prototypes
+ 网络流量图
+ 健康检测状态
+ 宕机总时间
生成的Graphs效果图
5、创建Trigger prototypes
+ inbound网络流量最近5分钟内超过2Mbps
+ outbound网络流量最近5分钟内超过2Mbps
+ 后端服务器健康检测异常
+ 后端服务器宕机
这里设置一下依赖,因为服务器是否宕机依赖于健康检测状态
自定义key shell
http://opensgalaxy.oss-cn-/images/zabbix_haproxy/zabbix_haproxy.tar.gz
导出的haproxy模版
http://opensgalaxy.oss-cn-/images/zabbix_haproxy/zbx_export_templates.xml
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'6804人阅读
MySQL(2)
说来惭愧,MySQL一直处于只会用,不怎么理解的阶段。甚至是一些较为深层次的管理,都不怎么熟悉,得加强啊!近日,系统测试,使用MySQL数据库,需要在某个表上创建触发器,数据库是在本机安装。但是,无论如何都无法创建触发器,后台错误信息如下:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: TRIGGER command denied to user 'root'@'mortimer-PC' for table 't_user'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2627)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:841)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681)
at com.apusic.jdbc.adapter.StatementHandle.execute(Unknown Source)
at com.apusic.esb.base.util.SQLUtil.createDBObjectIfNecessary(SQLUtil.java:263)
at com.apusic.esb.base.util.SQLUtil.createDBObjectIfNecessary(SQLUtil.java:225)
at com.apusic.esb.config.trigger.mysql.MySqlTriggerManager.createTriggersIfNecessary(MySqlTriggerManager.java:83)
at com.apusic.esb.config.trigger.TriggerConfigManager.deploy(TriggerConfigManager.java:331)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.apusic.mInvokeUtil.invoke(CommInvokeUtil.java:139)
at com.apusic.mInvokeUtil.invoke(CommInvokeUtil.java:43)
at com.apusic.mInvokeUtil.invoke(CommInvokeUtil.java:27)
at com.apusic.munication.mSocketServer$RequestProcessor.run(CommSocketServer.java:99)
at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)
10:38:42 错误 [.apusic.esb.config.trigger.TriggerConfigManager]
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: TRIGGER command denied to user 'root'@'mortimer-PC' for table 't_user'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2627)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:841)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681)
at com.apusic.jdbc.adapter.StatementHandle.execute(Unknown Source)
at com.apusic.esb.base.util.SQLUtil.createDBObjectIfNecessary(SQLUtil.java:263)
at com.apusic.esb.base.util.SQLUtil.createDBObjectIfNecessary(SQLUtil.java:225)
at com.apusic.esb.config.trigger.mysql.MySqlTriggerManager.createTriggersIfNecessary(MySqlTriggerManager.java:83)
at com.apusic.esb.config.trigger.TriggerConfigManager.deploy(TriggerConfigManager.java:331)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.apusic.mInvokeUtil.invoke(CommInvokeUtil.java:139)
at com.apusic.mInvokeUtil.invoke(CommInvokeUtil.java:43)
at com.apusic.mInvokeUtil.invoke(CommInvokeUtil.java:27)
at com.apusic.munication.mSocketServer$RequestProcessor.run(CommSocketServer.java:99)
at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)分析错误信息:TRIGGER command denied to user 'root'@'mortimer-PC' for table 't_user',看起来是不允许root用户在t_user表上执行TRIGGER命令,为啥不允许?分析下,首先怀疑是否驱动的问题,因为,驱动确实存在不匹配的问题,驱动的版本较低(针对5.0),而服务器版本为5.5,替换驱动之后问题依旧。其次,分析错误信息本身,不允许执行神马命令,看起来貌似是权限问题,Navicat连接数据库,查看用户权限,发现用户“root@%”的“Trigger”一栏未选中!而此次连接的用户,看起来是“root@mortimer-PC”,因此,“root@localhost”的规则,貌似不会生效,估计是此原因,造成无法创建触发器。调整“root@%”用户的权限,选中“Trigger”栏,重启MySQL服务,重新连接MySQL,创建触发器,OK!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:737530次
积分:8539
积分:8539
排名:第1686名
原创:109篇
转载:58篇
评论:402条
(1)(1)(3)(2)(3)(2)(1)(4)(3)(3)(2)(5)(5)(2)(1)(2)(1)(1)(4)(3)(1)(6)(1)(3)(1)(1)(4)(21)(4)(1)(2)(1)(4)(1)(4)(1)(2)(1)(3)(2)(4)(2)(7)(5)(6)(4)(9)(5)(3)(8)(5)(5)博客访问: 794627
博文数量: 81
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
〖现象(Symptom)&&& 〗
创建触发器时,报告权限不足,具体过程如下。
Step01:system的身份登陆数据库
SQL> connect system@wm
Enter password:
Connected.
Step02:创建触发器trigger_autoadd
SQL> CREATE OR REPLACE TRIGGER trigger_autoadd
& 2&&&& before insert
& 3&&&&&& on test.autoadd
& 4&&&&&& for each row
& 5& begin
& 6&&&& select test.SEQ_id.nextval into :new.
Warning: Trigger created with compilation errors
SQL> show error
Errors for TRIGGER SYSTEM.TRIGGER_AUTOADD:
LINE/COL ERROR
-------- ------------------------------------------
2/16&&&& PL/SQL: ORA-01031: insufficient privileges
2/4&&&&& PL/SQL: SQL Statement ignored
在表autoadd上创建触发器trigger_autoadd。
用户system有角色(role)DBA权限,而DBA已经就有CREATE ANY TRIGGER
的权限,因此,system就有create any trigger的权限。
Step03:system用户也能往表autoadd中也能插入数据库。
SQL> insert into test.autoadd
& 2& values(4,'sdfds','sdfsdf');
1 row inserted
Step04:序列也可以正常访问。
SQL> select test.SEQ_id.
&& NEXTVAL
----------
&&&&&& 205
这就非常奇怪,用户system有CREATE ANY TRIGGER的权限,system有访问触发器中所引用的对象(表)上的权限,为什么还报告“权限不足”呢?
要想创建触发器,必须要有CREATE TRIGGER,CREATE ANY TRIGGER的权限。如:
要想使用户tt有创建触发器的权限,则执行命令:
Grant CREATE TRIGGER
要想使用户tt有在其他模式(any schema)创建触发器的权限,则执行命令:
Grant CREATE ANY TRIGGER
本例中,用户system已经有了CREATE ANY TRIGGER和访问任何对象的权限。那么,用户System自然也有访问序列(sequence)seq_id的权限,但是这个权限是从角色(role)DBA继承而来的权限。创建触发器(trigger)时,ORACLE有一个限制,触发器(trigger)的拥有者必须被显示(explicitly)授予访问触发器(trigger)中涉及到的对象的权限(也就是说这些权限不能由角色继承而来)。
〖方法(Action)& && 〗
Step01:显示(explicitly)授予触发器的拥有者(system)访问序列(sequence)seq_id的权限。
SQL> grant select on test.seq_
Grant succeeded.
Step02:再次执行创建触发器trigger_autoadd3的脚本。
SQL> CREATE OR REPLACE TRIGGER trigger_autoadd3
& 2&& before insert
& 3&&&&&&& on test.autoadd
& 4&&&&&&&& for each row
& 5&&& begin
& 6&&&&&& select test.SEQ_id.nextval into :new.
Trigger created
触发器创建成功。
阅读(6399) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。建立trigger权限不足,求教了
向数据库导入trigger
DELIMITER&|
CREATE&TRIGGER&testref&
BEFORE&INSERT&ON&testdb.sell
FOR&EACH&ROW&
&&&&&set&new.sortorder=1;
ERROR&)&at&line&2:&TRIGGER&command&denied&to&user&'test_sql'@'&.......
已经分配所有权限
GRANT&ALL&PRIVILEGES&ON&testdb.*&TO&'test_sql'@'%'&IDENTIFIED&BY&'test_sql';
为啥还是不行?
你用什么用户登录
SELECT&CURRENT_USER();
引用&2&楼&wwwwa&的回复:你用什么用户登录
&SELECT&CURRENT_USER();
root&没在我手上,别人给我&(test_sql)&分配权限
show&&贴出你的结果。
引用&4&楼&acmain_chm&的回复:show&&贴出你的结果。
GRANT&SELECT,&INSERT,&UPDATE,&DELETE,&CREATE,&DROP,&INDEX,&ALTER,&CREATE&TEMPO
RARY&TABLES,&EXECUTE,&CREATE&VIEW,&SHOW&VIEW,&CREATE&ROUTINE,&ALTER&ROUTINE&ON&....
确实没有trigger,&这个要单独加上么?
引用确实没有trigger,&这个要单独加上么?是的。
显然对方没有用&GRANT&ALL&PRIVILEGES&ON&testdb.*&TO&'test_sql'@'%'&IDENTIFIED&BY&'test_sql';&给你授权。
MYSQL版本:
At&CREATE&TRIGGER&time,&the&user&that&issues&the&statement&must&have&the&TRIGGER&privilege.&(SUPER&prior&to&MySQL&5.1.6.)&
引用&8&楼&wwwwb&的回复:MYSQL版本:
&At&CREATE&TRIGGER&time,&the&user&that&issues&the&statement&must&have&the&TRIGGER&privilege.&(SUPER&prior&to&MySQL&5.1.6.)
据对方说是&5.2以上
让对方给你加权限。
show&grants&结果
|&GRANT&SELECT,&INSERT,&UPDATE,&DELETE,&CREATE,&DROP,&FILE,&INDEX,&ALTER,&CREATE
&TEMPORARY&TABLES,&EXECUTE,&CREATE&VIEW,&SHOW&VIEW,&CREATE&ROUTINE,&ALTER&ROUTIN
E&ON&*.*&TO&'test_sql'@'%'&IDENTIFIED&BY&PASSWORD&'*2D9CDE7A1E329BEFC3
|&GRANT&SELECT,&INSERT,&UPDATE,&DELETE,&CREATE,&DROP,&INDEX,&ALTER,&CREATE&TEMPO
RARY&TABLES,&LOCK&TABLES,&EXECUTE,&CREATE&VIEW,&SHOW&VIEW,&CREATE&ROUTINE,&ALTER
&ROUTINE,&TRIGGER&ON&`ddfw`.*&TO&'test_sql'@'%'&WITH&GRANT&OPTION
&&&&&&&&&&&&&&|
貌似加上了,但是还是报同样错
你现在要改的数据库是哪个?是不是ddfw?
是testdb&还是ddfw
对,是&ddfw,&之前是个代称而已&
引用&2&楼&wwwwa&的回复:你用什么用户登录
&SELECT&CURRENT_USER();
用的&test_sql
执行结果贴一下
mysql&&select&current_user();
+----------------+
|&current_user()&|
+----------------+
|&test_sql@%&&&&&|
+----------------+
你现在create&trigger&的出错信息是什么?
引用&17&楼&acmain_chm&的回复:你现在create&trigger&的出错信息是什么?
还是老样子&TRIGGER&command&denied&to&user&'test_sql'@'这里是某ip'&for&table&'sell'
表是在ddfw库中?
我在&11&楼的那个&show&grants&结果,有两条,&好像不太正常
引用&19&楼&wwwwa&的回复:表是在ddfw库中?
是的,当然
感觉是用户名的问题
MySQL的授权是&用户名+主机名
新增这样的用户,再授权试试
test_sql@192.168.0.6
跟对方沟通太不方便,想放弃触发器了,各位的意见我留着在本地上再学学,&感谢,稍后结贴
首先用户名没有问题。不用在这方面浪费时间了。
的确是你的两个授权,&ON&*.*&TO&'test_sql'@'%'的这个会被优先处理,让对方把这个revoke掉。
回复
即使是一小步也想与你分享}

我要回帖

更多关于 trigger 权限 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信