MySQLエラー1005(HY000): 'TMP' をテーブルを作成することはできません(エラー番号:13)
-
21-09-2019 - |
質問
私はUbuntuの9.10にMySQLを実行しています、 私が作成しようとするのMysqlのプロセスは、私は、私はテーブルを作成することができます(mysqlのではない)自分のDBを使用しています、私はすべての権限を与えたのMySQLにログインするときに、私はrootアカウントを使用しているrootで実行されているが、一時テーブル私はこのエラーを取得します:
ERROR 1005(HY000):テーブルを作成できません 'TMP'(errnoに:13)
このクエリの
一時表TMP(ID int型)を作成する;
I私のハードドライブのスペースのきたたくさんは、すべての権限は(もVAR / libに/ mysqlのmysqlの権限を持っている)が付与されます。
任意のアイデア? おかげで、 Koby
解決 2
うーん... /etc/mysql/my.cnfであり、デフォルトとして(ルートから)/ tmpです使用するために、「TMP」フォルダがあります...とMySQLの権限を持っていません。 chmodの0777 / tmpはトリックを行います。
他のヒント
私は数週間前に同じ問題がありました。
ファイルシステム上のデータベースフォルダが間違ったユーザーが所有していました。
シンプルchown -R mysql:mysql /var/lib/mysql/database_name
やったトリック!
すべてのは、ここで説明する: http://www.dinosources.eu/ 10分の2010 / mysqlの-カント作成テーブルを(それはイタリア語だが、それはかなり明らかだ)
乾杯
私はFedoraの16に/ tmpに、正しいコンテキストとの十分なディスク容量の適切な権限を持つ上記のエラーが発生しました。
私の髪をリッピングの一日を過ごした後、私は、MySQLサービスのためにsystemd構成の設定にまで問題を追跡しました。
設定/etc/systemd/system/multi-user.target.wants/mysqld.service
がある場合のためのPrivateTmp=true
チェックで。この変更軍MySQLの代わりに/ tmpのファイルを直接置くのを/ tmp /にsystemd-名前空間-XXXXXサブディレクトリを使用します。一時ファイルの作成が必要なクエリの許可拒否エラー(13)とどうやらMySQLがないことのように行い、失敗します。
次のように、この設定を上書きすることができます:
cat >> /etc/systemd/system/mysqld.service << END_CONFIG
.include /lib/systemd/system/mysqld.service
[Service]
PrivateTmp=false
END_CONFIG
実行して、そして、リロードの設定:systemctl daemon-reload
と再起動のMySQL
あなたはconfig.iniの中の属性にMaxNoOfOrderedIndexesを設定するには? これのデフォルト値は、あなたがそれらの最後を作成することはできません、作成するテーブルの多くを持っているのであれば、128です。 見る: ます。http:// DEV .mysql.com / DOC / refman / 5.1 / EN / mysqlの-クラスタのndbd-definition.html#ndbparam-のndbd-にMaxNoOfOrderedIndexesする
私はアマゾンのRed Hatインスタンス上で、今日と同じ問題がありました。私は(mysqlのシェルから)どちらのmysql decribeを行うものmysqldumpを実行することができました。この私が最も明白な解決策を試してみました解決するために:
# chown root:root /tmp -v
# chmod 1777 /tmp -v
# /etc/init.d/mysqld restart
しかし、これは助けませんでした。 /var/log/mysqld.logでは私はまだ見ます:
141022 10:23:35 InnoDB: Error: unable to create temporary file; errno: 13
141022 10:23:35 [ERROR] Plugin 'InnoDB' init function returned error.
141022 10:23:35 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
それはに/ tmpの書き込みにMySQLのデーモン許可しなかったのSELinuxたことが出てきました。
:そのため、私がやったことにしました# getenforce
Enforcing
SELinuxがenforcingモードで実行されている場合は、を確認するには(あなたがここでこのについての詳細を読むことができます>)。このため、高速かつ迅速な解決策は、SELinux permissiveモードに切り替えることだっます:
# setenforce 0
# getenforce
Permissive
# /etc/init.d/mysqld restart
上記の私の問題を解決します。
あなたが許容する施行から切り替えているときに、硬化生産に取り組んでいる場合は、は、以下のことを注意してください、あなたは非常に注意しなければなりません。また、この特定の設定は再起動後にリセットされますので、ご注意ください。
私はこれらの(13エラー番号)を持っていました
tail -f /var/log/syslog
それはあなたがデータベースにアクセスしようとした後、データベースファイルとは何かを持っているかどうかを調べるには、私の場合にはそれがあった。
apparmor=[DENIED]
何か他のものを使用すると、AppArmorのに対処する必要がありますが、あなたの場合には、それはあるかもしれない意味
私の場合でます:
# semanage fcontext -a -t mysqld_db_t "/datadir(/.*)?"
# restorecon -Rv /datadir
#chcon -R -t mysqld_db_t /datadir
私の問題を解決します。
もしLinux上でXAMPPでphpMyAdminにをインストールし、ユーザーがこのパスに設定することができます:
sudo chown -R mysql:mysql /opt/lampp/var/mysql/my_database