16

私はubuntu9.10でMysqlを実行しています、Mysqlのプロセスはrootとして実行されています、Mysqlにログインするときにrootアカウントを使用しています、これはすべての特権を与えました、私は自分のdb(mysqlではなく)を使用しています、私は作成できますテーブルですが、一時テーブルを作成しようとすると、次のエラーが発生します。

エラー1005(HY000):テーブル'tmp'を作成できません(errno:13)

このクエリの場合:

CREATE TEMPORARY TABLE tmp(id int);

ハードドライブに十分なスペースがあり、すべての権限が付与されています(var / lib / mysqlにもmysql権限があります)。

何か案が?ありがとう、コビー

4

8 に答える 8

36

私は数週間前に同じ問題を抱えていました。ファイルシステム上のデータベースフォルダは、間違ったユーザーによって所有されていました。簡単なchown -R mysql:mysql /var/lib/mysql/database_nameトリックでした!

ここですべてが説明されています:http ://www.dinosources.eu/2010/10/mysql-cant-create-table (イタリア語ですが、かなり明確です)

乾杯

于 2010-10-27T19:57:37.150 に答える
5

ええと.../etc / mysql / my.cnfには、デフォルトで/ tmp(ルートから)である「tmp」フォルダがあり、mysql権限はありません。chmod 0777/tmpがトリックを実行します

于 2010-03-19T13:03:32.223 に答える
2

/ tmpの正しい権限、正しいコンテキスト、Fedora 16の十分なディスク容量で、上記のエラーが発生しました。

髪の毛をはぎ取った1日後、MySQLサービスのsystemd構成の設定まで問題を追跡しました。

/etc/systemd/system/multi-user.target.wants/mysqld.service設定があるかどうかを確認しPrivateTmp=trueます。この変更により、MySQLはファイルを/ tmpに直接配置する代わりに、/ tmp/systemd-namespace-XXXXXサブディレクトリを使用するようになります。どうやらMySQLはそれを嫌い、一時ファイルの作成を必要とするクエリに対して許可拒否エラー(13)で失敗します。

この設定は次のようにオーバーライドできます。

cat >> /etc/systemd/system/mysqld.service << END_CONFIG
.include /lib/systemd/system/mysqld.service
[Service]
PrivateTmp=false
END_CONFIG

次に、:を実行して構成をリロードしsystemctl daemon-reload、MySQLを再起動します。

于 2012-05-24T19:23:12.720 に答える
1

config.iniで属性MaxNoOfOrderedIndexesを設定しますか?デフォルト値は128であるため、作成するテーブルが多数ある場合、最後のテーブルを作成することはできません。参照: http ://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnooforderedindexes

于 2012-04-21T14:29:13.317 に答える
1

今日、AmazonRedHatインスタンスで同じ問題が発生しました。(mysqlシェルからの)mysqldecribeを実行することも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.

MySQLデーモンが/tmpに書き込むことを許可しなかったのはSELinuxであることが判明しました。したがって、私がしたことは次のとおりでした。

# getenforce 
Enforcing

SELinuxが強制モードで実行されているかどうかを確認するには(これについて詳しくは、こちらをご覧ください)。このための迅速かつ迅速な解決策は、SELinuxパーミッシブモードに切り替えることでした。

# setenforce 0
# getenforce 
Permissive
# /etc/init.d/mysqld restart

上記は私の問題を解決しました。

強化された生産に取り組んでいる場合は、強制から許容に切り替えるときに非常に注意する必要があることに注意してください。この特定の設定は、再起動後にリセットされることにも注意してください。

于 2014-10-22T10:52:21.493 に答える
1

私はこれらの(errno:13)エラーを抱えていて、/ var / log / syslogを調べた後でしかそれらを理解しなかったので、私のアドバイスは次のとおりです。

tail -f /var/log/syslog

データベースにアクセスしようとした後、それがデータベースファイルと関係があるかどうかを確認してください。私の場合は

apparmor=[DENIED]

つまり、apparmorに対処する必要がありますが、あなたの場合は別のものである可能性があります。

于 2015-12-16T21:12:38.133 に答える
0

私の場合:

    # semanage fcontext -a -t mysqld_db_t "/datadir(/.*)?"
    # restorecon -Rv /datadir
    #chcon -R -t mysqld_db_t /datadir

私の問題を解決しました。

于 2017-08-31T15:18:17.110 に答える
-1

LinuxにXAMPPとともにPhpMyAdminをインストールした場合、ユーザーは次のパスに設定できます。

sudo chown -R mysql:mysql /opt/lampp/var/mysql/my_database

于 2019-07-17T17:16:39.910 に答える