当前位置: 首页 > 知识库问答 >
问题:

MySQL创建表时出现--只读错误

孟征
2023-03-14

我想创建一个在MySQL中拥有自己数据库所有权限的用户。

当我使用这个用户创建一个表时,MySQL返回SQL server正在使用只读选项运行。

但是,当我改变到另一个现有用户的所有权限上*.*,我可以创建表没有错误。

我想知道只读选项是全局的还是什么?

以下是我使用MySQL root的MySQL命令:

mysql> create user 'demo'@'localhost' identified by 'demo';
mysql> create database demo;
mysql> grant all privileges on demo.* to demo@localhost;
mysql> show grants for demo@localhost;
+-------------------------------------------------------------------------------------------------------------------+
| Grants for demo@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'demo'@'localhost' IDENTIFIED BY PASSWORD '*demo-hashed*' |
| GRANT ALL PRIVILEGES ON `demo`.* TO 'demo'@'localhost'                                                |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

然后我切换到用户"demo":

mysql> use demo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create table t(t1 int);
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

所以我检查了只读选项,它似乎是打开的。

然而,我尝试使用另一个用户的权限*.*,我可以成功地创建表。

另一个用户授权设置:

mysql> show grants for demo2@'%';
+-----------------------------------------------------------------------------------------------------------------+
| Grants for demo2@%                                                                                            |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'demo2'@'%' IDENTIFIED BY PASSWORD '*demo2-hased*' |
+-----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MySQL版本:

mysql> select version();
+------------------------+
| version()              |
+------------------------+
| 5.1.68.0 |
+------------------------+
1 row in set (0.00 sec)

顺便说一下,在我设置read_only=0之后,我可以使用demo创建表。我只是不知道为什么demo2可以在只读打开时创建表。

谢谢

共有1个答案

傅琦
2023-03-14

请检查My。cnf适用于Linux或My。ini用于windows,在[mysqld]下删除只读参数,然后重新启动服务并重试,这将解决只读问题,但如果在只读中创建表,则该表将是临时表。

 类似资料:
  • 我正在用MySQL数据库构建一个django应用程序。当我第一次运行“Python Manage.py Migrate”时,一些表创建得很好,然后出现一些错误。引出的错误是: 完整的回溯是:

  • 问题内容: 我在Docker容器中有一个MySQL数据库。入口点执行创建数据库的脚本和创建表的脚本。 除了一张桌子,其他所有东西都工作正常。 记录到控制台的错误是 第150行是后面的开括号 MySQL版本:8.0.3-rc-log 主机操作系统:Debian jessie 我开始考虑并且可能是保留关键字,因此我重命名了表和列,但错误仍然存​​在。 问题答案: @Bill Karwin在第一条评论中

  • 我正在尝试使用EclipseLink创建一个表。正在使用的java类是:- EL警告]:2017-04-07 14:04:53.768--ServerSession(1650327539)--异常[EclipseLink-4002](Eclipse持久性服务-2.6.3.v20160428-59C81C5):org.Eclipse.Persistence.exceptions.DatabaseEx

  • 创建一个函数,但它给出的错误数据库表如下所示

  • 我的logcat消息: (1)near“INTEGER”:CREATE_SQL android.database.sqlite.sqliteexception中的语法错误异常:编译时:create BOMUL_PLACE(_id INTEGER NOT NULL主键auticrement,NAME TEXT,LAT DOUBLE,LNG DOUBLE,CHECK INTEGER DEFAULT 0

  • 并向我抛出以下输出: 17:25:39创建表。(INT NOT NULL,)主键(