我创建了数据库,例如'mydb'.
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
现在我可以从任何地方登录到数据库,但无法创建表.
如何授予该数据库和(将来)表的所有权限.我无法在'mydb'数据库中创建表.我总是得到:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
Run Code Online (Sandbox Code Playgroud) 在我的网站上,我使用的是MySQL数据库.我正在使用webservice,在那里我做所有与数据库相关的操作.
现在,在该Web服务的一种方法中,我得到以下错误.
选择命令被拒绝用户''''为表'''
可能有什么不对?
下面是我得到该错误的代码.我试过调试,发现它在线路上失败了
MySqlDataReader result1 = command1.ExecuteReader();
这是我的代码:
String addSQL = "Select Max(`TradeID`) from `jsontest`.`tbl_Positions";
MySqlConnection objMyCon = new MySqlConnection(strProvider);
objMyCon.Open();
MySqlCommand command = objMyCon.CreateCommand();
command.CommandText = addSQL;
MySqlDataReader result = command.ExecuteReader();
//int j = command.ExecuteNonQuery();
while (result.Read())
{
MaxTradeID = Convert.ToInt32(result[0]);
}
objMyCon.Close();
for (i = 1; i <= MaxTradeID; i++)
{
String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";
MySqlConnection objMyCon1 = new MySqlConnection(strProvider);
objMyCon1.Open();
MySqlCommand command1 = objMyCon1.CreateCommand(); …Run Code Online (Sandbox Code Playgroud) show grants for charm@'localhost';
---------------------+
| Grants for charm@localhost |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'charm'@'localhost' IDENTIFIED BY PASSWORD '*EDD1CD76B1331E363B2BAED3F0B7EAF28559FBEWD' |
| GRANT ALL PRIVILEGES ON `charmstyle_com`.`charmstyle_com` TO 'charm'@'localhost'
Run Code Online (Sandbox Code Playgroud)
我用了
grant all on charmstyle_com to charm@'localhost' IDENTIFIED BY 't1q4gytrur';
flush privileges;
Run Code Online (Sandbox Code Playgroud)
然后我导入数据库,它显示一个错误:
ERROR 1142 (42000) at line 29: CREATE command denied to user 'charm'@'localhost' for table 'adminnotification_inbox'
Run Code Online (Sandbox Code Playgroud) 我正在尝试建立一个MySQL复制从站,并且运行起来非常困难LOAD DATA FROM MASTER;.是的,我知道它已被弃用,但我正在运行MySQL 5.1,这不是我目前的问题.
出于某种原因,MySQL一直告诉我CREATE命令被拒绝,但是对SHOW GRANTS的检查则另有说法.看一下这个:
mysql> SHOW GRANTS;
+--------------------------------------------------------------------------------------------------------------------+
| Grants for replicator@% |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'replicator'@'%' IDENTIFIED BY PASSWORD '*ABCDEFABCDEFABCDEFABCDEFBLAHBLAHBLAHBLAH' |
+--------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> LOAD DATA FROM MASTER;
ERROR 1142 (42000): CREATE command denied to user 'replicator'@'localhost' for table 'aggregate'
mysql>
Run Code Online (Sandbox Code Playgroud)
我觉得奇怪的是,在打电话时LOAD DATA FROM MASTER,它认为我是'replicator'@'localhost',但是SHOW GRANTS说'replicator'@'%'.为了安全起见,我也给了同样的权利'replicator'@'localhost'.
mysql> SHOW GRANTS FOR 'replicator'@'localhost';
+----------------------------------------------------------------------------------------------------------------------------+ …Run Code Online (Sandbox Code Playgroud) 我已经让用户完全控制数据库中的一个表.不管怎样他们似乎无法删除记录.
我作为一个特权用户尝试过:
GRANT DELETE ON databasename.tablename TO username@'%';
flush privileges;
Run Code Online (Sandbox Code Playgroud)
但删除stil不起作用
ERROR 1142 (42000): DELETE command denied to user 'username'@'localhost' for table 'tablename'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
干杯,
内森.
我试图使用这样的查询将一些数据从我的生产数据库移植到我的沙盒:
INSERT `dbsandbox`.`SomeTable`(Field1, Field2, Field3)
SELECT t.Field1, t.Field2, t.Field3
FROM `dbprod`.`SomeTable` t;
Run Code Online (Sandbox Code Playgroud)
当我尝试这种跨数据库连接时,我收到以下错误:
ERROR 1142(42000):对表'SomeTable'的用户'myusername'@'server.domain.tdl'拒绝SELECT命令
有问题的用户对两个数据库的相关表都有权限.我已经在unix mysql客户端和windows MySQL Query Browser应用程序中尝试了这个,结果相同.
我错过了什么?
我们的用户以相当低级别的用户身份登录到生产数据库,在数据库级别授予SELECT,并在他们需要访问的特定表上授予INSERT/UPDATE/DELETE.
他们还有权创建临时表(我们需要它们来处理一些更复杂的查询).问题是虽然他们可以创建临时表,但他们无法访问INSERT!
我们找到的一种解决方法是创建一个同名的"真实"(持久?)表(但只有一个字段)并授予它们插入其中的访问权限.然后,当使用相同的名称创建临时表时,系统将使用该表,而不是持久表.
mysql> CREATE TEMPORARY TABLE `testing` (`id` INTEGER AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(30));
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO `testing` (`name`) VALUES ('testing');
ERROR 1142 (42000): INSERT command denied to user 'stduser'@'office.companyname.co.uk' for table 'testing'
Run Code Online (Sandbox Code Playgroud)
如果您尝试授予对表的访问权限(在另一个会话中,以root用户身份),则不能:
mysql> GRANT INSERT ON testdb.testing TO 'stduser'@'%';
ERROR 1146 (42S02): Table 'testdb.testing' doesn't exist
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,基本上,我们可以在临时表上授予INSERT/UPDATE/DELETE,而不会挂起同名的"持久"表吗?
我有一个名为sales_observation_daily_summary的表,它是sales_observation_daily_summary_view的物化视图.我已经定义了一个名为sync_daily_summary_view_with_table的存储过程,它将刷新物化视图.从功能上讲,它完全符合我的预期.但是,在同一连接上调用存储过程两次时有一个奇怪的错误(使用连接池时可能出现这种情况).最初这出现在我的Java集成测试中,但我能够轻松地在MySQL Workbench上重现它,所以它不应该与JDBC或Spring或中间的任何东西有关.
call sync_daily_summary_view_with_table();
call sync_daily_summary_view_with_table();
Run Code Online (Sandbox Code Playgroud)
在第一次调用时,它会执行它应该执行的操作并正常返回.在第二个电话中,我得到:
Error Code: 1142
SELECT command denied to user 'test'@'localhost' for table 'one_pg_someone_sales_observation_daily_summary_view'
Run Code Online (Sandbox Code Playgroud)
one_pg_someone_sales_observation_daily_summary_view在sales_observation_daily_summary_view,这是在存储过程中引用的引用.错误消息没有任何意义,首先,存储过程在第一次运行时没有对象,其次,该用户有足够的权限在该视图上进行选择.
我不会显示所涉及的所有视图,因为它非常复杂,但sales_observation_daily_summary_view被定义为其他几个视图的并集,因此:
CREATE ALGORITHM=UNDEFINED DEFINER=`test`@`localhost`
SQL SECURITY DEFINER
VIEW `sales_observation_daily_summary_view` AS
/* Specific Stage and Observer */
SELECT zone,
session_date,
session_year,
session_month,
session_week,
phenomenon_group_id,
phenomenon_group_name,
stage_id,
stage_name,
observer_id,
series_name,
benchmark_id,
session_count,
session_value,
benchmark_value
FROM one_pg_someone_sales_observation_daily_summary_view
UNION ALL /* All Stages */
SELECT zone,
session_date,
session_year,
session_month,
session_week,
phenomenon_group_id,
phenomenon_group_name,
stage_id,
stage_name,
observer_id,
series_name,
benchmark_id,
session_count,
session_value,
benchmark_value
FROM all_stages_someone_sales_observation_daily_summary_view
UNION ALL …Run Code Online (Sandbox Code Playgroud) 我正在使用Windows 7.我已经下载mysql-5.5.16-win32.zip并安装了它.我成功启动了MySQL服务器,但是我收到了这个错误:
C:\Program Files\Mysql\bin>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.16 MySQL Community Server (GPL)
mysql> select user, host, password from mysql.user;
ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user
'
mysql> mysql -u root -p
-> select user, host, password from mysql.user;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your …Run Code Online (Sandbox Code Playgroud)