質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • MySQL

    6167questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MySQL いつの間にかリードオンリーになりレコードの追加/更新、削除不可に。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,275

ssmxgo

score 143

状況

申し訳ありませんが、データベースにはあまり精通していません。(コンソールを叩く程度は出来ます)
基本的に、データベースの読み込みをメインで行い、久しぶりに変更、更新を行おうとしたら
全てにおいて、

MariaDB [DB_NAME]> delete from my_table where id=43
    -> ;
ERROR 1036 (HY000): Table 'my_table' is read only


いつのまにかデータベース全体(実際はレコードの編集権限っぽい)がリードオンリーになっているので、ユーザの権限絡みかとも思いましたがユーザ権限はいじって[[:いない、そもそもパスワード未設定のroot、及びphpMyAdmin?pmaのみ。
ログインはrootしか利用していない、です。

環境

MAC
XAMPP
特に特別なことはしていません。
Local環境でパスワードは設定していません

select HOST,User,Password from user;
+-----------+------+----------+
| HOST      | User | Password |
+-----------+------+----------+
| localhost | root |          |
| 127.0.0.1 | root |          |
| ::1       | root |          |
| localhost |      |          |
| localhost | pma  |          |
+-----------+------+----------+

追記

2017/02/16 11:56
かなり手がかりになる情報らしきものに行き着きました
MySQLのファイルを確認したところ
ls /Applications/XAMPP.ori/xamppfiles/var/
通常

drwxrwx---  89 _mysql  _mysql   3.0K  2 16 11:31 mysql
drwxrwx---   3 _mysql  _mysql   102B  2 16 11:31 performance_schema
drwxrwx---  41 _mysql  _mysql   1.4K  2 16 11:31 phpmyadmin

になるところ

drwxrwx---   89 _mysql  403     3.0K  1  5 19:44 mysql
drwxrwx---    3 _mysql  403     102B  1  5 19:44 performance_schema
drwxrwx---   41 _mysql  403     1.4K  1  5 19:44 phpmyadmin

と、酷い。wineにより動かしていたWindowsクライアントがいたずらをしたのか、もうどこに問題が飛散しているか疑心暗鬼-1。
どうしてこんなことになっているのか、この対策と、発生原因の探求と問題のフェーズが変わったような気がします。

chgrp -R _mysql /Applications/XAMPP/xamppfiles/var/mysql


してグループを変えましたが、以下の現象はあい変わらず、(;´д`)トホホ…
もうどこに問題が飛散しているか疑心暗鬼-2 な状態。
諦めよう。

2017/02/16 10:24
DB / テーブルの作成、削除は可能。

create database test_db;
Query OK, 1 row affected (0.00 sec)

create table testtest (id integer);
Query OK, 0 rows affected (0.12 sec)

drop table test;
Query OK, 0 rows affected (0.02 sec)

drop database test_db;
Query OK, 0 rows affected (0.01 sec)

新DB/既存DBのテーブルに対するレコードの追加(/更新、削除)はNG。

INSERT INTO test (id) value (5);
ERROR 1036 (HY000): Table 'test' is read only

以下、状況変わらず

SELECT * FROM sys.dm_tran_locks;
ERROR 1146 (42S02): Table 'sys.dm_tran_locks' doesn't exist

unlock tables;
Query OK, 0 rows affected (0.00 sec)

視覚的にSQLを理解するのに、phpMyAdmin やら WorkBench やら A5M2(wine on Mac) やらで
接続したことが何か影響をしたかもしれません。

問題解決のための解析すらわかりません
どうかお力添え下さい

ご指示くだされた、必要な追加情報アップいたします

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

check解決した方法

0

諦めました。
SQLのシステムファイルがわけの分からない、403グループに振り分けられていました。
検索しても、それっぽい記事がヒットせず、一般的でないクリティカルなシステム破壊と割り切りました。

XAMPPディレクトリを退避し、XAMPPを再インストール。DBをエクスポート、インポートで復旧。

ご協力、ありがとうございました!! orz orz

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

エラーメッセージでググる(今回はテーブル名は除いて)と日本語では 
mysql starting-crash-recoveryからのリカバリ(DBが削除できない) が見つかります。
参考になるでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/16 10:46

    夜分ありがとうございました(スマホからコメント入れましたが反映されていませんでした)

    ありがとうございました。確認しましたが状況がちょっと違うようでした。
    ※テータベース、及びテーブルの作成/削除は可能でした。
    しかしながら、切り分けの材料となりました。

    なんなんでしょう、こんなのは初めてですね
    回答がないことからも、かなり特殊事例なんでしょうかね(~_~;)

    キャンセル

  • 2017/02/16 14:22

    エラーメッセージでググって他にもhitしたものも含めて調べてみては?英文も翻訳機能も使えばだいたい読めますから。

    キャンセル

  • 2017/02/16 16:54 編集

    ありがとうございます。
    かなり調べてみましたが、そもそも基礎知識の不足で該当する例を見つけられませんでした。

    なにか、今回はwineを使ったSQLクライアントが引き起こした、通常では起こり得ない複雑な問題ではないかと結論に至りました。

    キャンセル

0

ログインできているのであれば、

SELECT * FROM information_scheme.table_privileges WHERE table_name = 'my_table';

で、とりあえず TABLE の権限がどうなっているか見るのと、
TABLE を mount するときに何かトラブルがあって read only になっていないか、MariaDB の起動ログを見てみるくらいですかねえ…

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/16 13:23 編集

    ありがとうございます!

    SELECT * FROM information_scheme.table_privileges WHERE table_name = 'my_table';
    ERROR 1146 (42S02): Table 'information_scheme.table_privileges' doesn't exist

    TABLE の権限
    MariaDB の起動ログ
    ココらへんは(基礎から)調べてみない(学ばない)とわかりません(~_~;) 頑張ります。

    キャンセル

  • 2017/02/16 14:36

    あ、SQL 間違ってた。
    SELECT * FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES WHERE table_name = 'my_table'
    として、その結果の PRIVILEGES_TYPE が、
    SELECT、INSERT、UPDATE、REFERENCES、ALTER、INDEX、DROP、CREATE VIEW
    のどれがあるか確認しましょう。
    もし INSERT や UPDATE があるならば、権限は問題ないので、MariaDB がただしくデータベースをマウントできていないということになります。
    ※テーブルを新たに作れるということは、ストレージそのものは書き込み可能なはずですから、ディスクマウント時のトラブルではない、はず…

    キャンセル

  • 2017/02/16 16:58

    ありがとうございます。
    質問文にも追記させていただきましたが、どう考えても通常ではない状態でそのような状況が発生したまだわかりません。しかしながら今回はXAMPP再インストール、データのインポート・エクスポートで復旧いたしました。

    ご記入いただいた内容は勉強を兼ね、後日もう一度障害状況を再現させてテストさせていただきます。

    キャンセル

同じタグがついた質問を見る

  • MySQL

    6167questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。