Pregunta

Estoy corriendo MySQL en Ubuntu 9.10, el proceso de MySQL se está ejecutando como root, estoy usando una cuenta de raíz cuando se conecta a MySQL, que he dado a todos los privilegios, estoy usando mi propia db (no MySQL), puedo crear una tabla, pero cuando intento de crear tabla temporal me sale este error:

ERROR 1005 (HY000): No se puede crear la tabla 'tmp' (Error: 13)

Para esta consulta:

CREATE tmp TABLA TEMPORAL (id int);

Tengo un montón de espacio en mi disco duro, todos los permisos se conceden permisos (también var / lib / mysql MySQL está).

¿Alguna idea? Gracias, Koby

¿Fue útil?

Solución 2

Bueno ... en /etc/mysql/my.cnf está la carpeta "tmp" para su uso, que es / tmp (de raíz) como por defecto .. y no tiene privilegios de MySQL. chmod 0777 / tmp hará el truco

Otros consejos

Yo tenía el mismo problema hace un par de semanas. La carpeta de base de datos en el sistema de archivos fue poseído por el usuario incorrecto. Una sencilla chown -R mysql:mysql /var/lib/mysql/database_name hizo el truco!

Todo está explicado aquí: http://www.dinosources.eu/ 2010/10 / mysql-cant-crear-mesa (que es italiano, pero es bastante clara)

Saludos

I tenía el error anterior con permisos correctos en / tmp, contexto correcto y suficiente espacio en disco en Fedora 16.

Después de un día de rasgar mi pelo, me rastreado el problema a un ajuste en la configuración systemd para el servicio MySQL.

En /etc/systemd/system/multi-user.target.wants/mysqld.service cheque por si hay una PrivateTmp=true ajuste. Este MySQL fuerzas de cambio a utilizar a / tmp / subdirectorio systemd-espacio de nombres-XXXXX en vez de poner los archivos directamente en / tmp. Al parecer, MySQL no le gusta eso y fallar con un error denegado el permiso (13) para cualquier consulta que requiere la creación de un archivo temporal.

Puede anular esta configuración de la siguiente manera:

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

A continuación, recargar configuración ejecutando: systemctl daemon-reload y reinicie MySQL

.

¿Establece los atributos MaxNoOfOrderedIndexes en su config.ini? Su valor por defecto es 128, por lo que si usted tiene un montón de tablas para crear, la última de ellas no puede ser creado. ver: http: // dev .mysql.com / doc / RefMan / 5,1 / en / mysql-cluster-ndbd-definition.html # ndbparam-ndbd-MaxNoOfOrderedIndexes

Yo tenía el mismo problema hoy en mi instancia de Amazon Red Hat. Yo era capaz de realizar ni decribe MySQL (de Shell mysql) ni ejecutar mysqldump. Para resolver este Probé la solución más obvia:

# chown root:root /tmp -v
# chmod 1777 /tmp -v
# /etc/init.d/mysqld restart

Pero esto no ayuda. En el /var/log/mysqld.log todavía veía:

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.

Resultó que era SELinux que no permitía MySQL demonio va a escribir en / tmp. Por lo tanto, lo que hice fue:

# getenforce 
Enforcing

Para verificar si SELinux está ejecutado en modo obligatorio (se puede leer más acerca de este aquí ). La solución rápida y rápida para esto era para cambiar a modo permisivo SELinux:

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

Lo anterior resolvió mi problema.

Tenga en cuenta que, si se está trabajando en la producción endurecido, se debe tener mucho cuidado cuando se cambia de hacer cumplir a permisiva. Tenga en cuenta también que esta configuración específica se restablecerá después del reinicio.

Yo estaba teniendo estos (errno: 13) errores y sólo a ellos descubrí después de mirar en / var / log / syslog, así que mi consejo es el siguiente:

tail -f /var/log/syslog

A ver si eso tiene algo que ver con los archivos de base después de intentar acceder a la base de datos, en mi caso era

apparmor=[DENIED]

Lo que significa que tiene que hacer frente a apparmor, pero en tu caso podría ser otra cosa.

con mi caso:

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

solucionado mi problema.

Si se instala PhpMyAdmin con XAMPP en Linux, el usuario puede configurar en esta ruta:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top