Mysql ERROR 1005 (HY000): Can ' T create table 'tmp' (errno: 13)
Ich bin mit Mysql auf ubuntu 9.10,
der Prozess von Mysql als root läuft, bin ich mit root-Accounts beim einloggen in Mysql, die ich gab, und alle Privilegien, ich bin mit meinem eigenen db(nicht mysql), kann ich eine Tabelle erstellen, aber wenn ich versuche zu erstellen Temporäre Tabelle, die ich bekomme diese Fehlermeldung:
ERROR 1005 (HY000): Can ' T create table 'tmp' (errno: 13)
Für diese Abfrage:
CREATE TEMPORARY TABLE tmp (id int);
Ich habe viel Platz auf meiner Festplatte, alle Berechtigungen erteilt werden(auch var/lib/mysql mysql-Berechtigungen).
Irgendeine Idee?
Vielen Dank,
Koby
InformationsquelleAutor der Frage koby | 2010-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche Problem vor ein paar Wochen.
Die Datenbank-Ordner auf dem Dateisystem war im Besitz von dem Anwender falsch.
Eine einfache
chown -R mysql:mysql /var/lib/mysql/database_name
hat den trick!Alles hier erklärt: http://www.dinosources.eu/2010/10/mysql-cant-create-table (es ist Italienisch, aber es ist ziemlich klar)
Cheers
InformationsquelleAutor der Antwort Marchino
Gut...
in /etc/mysql/my.cnf gibt es die "tmp" - Ordner, die ist /tmp (von der Wurzel) als Standard.. und nicht über mysql-Berechtigungen.
chmod 0777 /tmp wird den trick tun
InformationsquelleAutor der Antwort koby
Hatte ich den oben genannten Fehler mit der richtigen Berechtigungen für /tmp, den richtigen Rahmen und ausreichend Speicherplatz auf Fedora 16.
Nach einem Tag der rippen meine Haare aus, ich verfolgte das problem auf eine Einstellung in der systemd-Konfiguration für den MySQL-Dienst.
In
/etc/systemd/system/multi-user.target.wants/mysqld.service
überprüfen, wenn es eine EinstellungPrivateTmp=true
. Diese änderung zwingt MySQL zu verwenden eine /tmp/systemd-namespace-XXXXX-Unterverzeichnis, anstatt Dateien direkt in /tmp. Anscheinend MySQL nicht mag, und schlägt mit einen permission denied-Fehler (13) für jede Abfrage, erforderte die Schaffung einer temp-Datei.Können Sie diese Einstellung außer Kraft setzen, wie folgt:
Laden Sie dann die Konfiguration durch ausführen von:
systemctl daemon-reload
und starten Sie MySQL.InformationsquelleAutor der Antwort Oleg Barshay
setzen Sie das Attribut MaxNoOfOrderedIndexes in deiner config.ini?
Der default-Wert ist 128,also, wenn Sie viele Tabellen zu erstellen,die letzten von Ihnen erstellt werden kann.
siehe:
http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnooforderedindexes
InformationsquelleAutor der Antwort songjiesdnu
Ich hatte das gleiche Problem heute auf meine Amazon-Red Hat-Instanz. Ich war in der Lage zu führen weder mysql decribe (aus der mysql-shell) noch ausführen, mysqldump. Um dieses Problem zu lösen habe ich versucht die naheliegendste Lösung:
Aber das hat nicht geholfen. In der /var/log/mysqld.log sah ich noch:
Kam heraus, dass es war SELinux, die nicht zulassen, MySQL-daemon zu schreiben, in /tmp. Deshalb ist das, was ich Tat, war:
Um zu überprüfen, ob SELinux läuft im enforcing-Modus (Lesen Sie mehr über dieses hier). Die schnelle und schnelle Lösung für dieses war zu wechseln, um SELinux permissive-Modus:
Die oben genannten mein problem gelöst.
Bitte beachten Sie, dass, wenn Sie arbeiten auf gehärtetem Produktion, Sie sollten sehr vorsichtig sein, wenn Sie den Wechsel von enforcing auf permissive. bitte beachten Sie auch, dass diese spezielle Einstellung wird zurückgesetzt nach dem Neustart.
InformationsquelleAutor der Antwort Bartosz Firyn
War ich mit diesen (errno: 13) Fehler und nur Sie herausfinden, nach einem Blick in /var/log/syslog, also mein Rat ist dieser:
Sehen, ob das hat etwas zu tun mit den Datenbank-Dateien, nachdem Sie versuchen, auf die Datenbank zugreifen, in meinem Fall war es
Was bedeutet, dass Sie benötigen, um mit apparmor, aber in deinem Fall könnte es auch etwas anderes sein.
InformationsquelleAutor der Antwort inkredibl
mit meinem Fall:
mein problem gelöst.
InformationsquelleAutor der Antwort Robin LI