ver usuarios usuario tipos que privilegios privilegio permisos niveles modificar globales asignar mysql linux rhel rhel5

tipos - usuarios y privilegios en mysql



Error fatal: no se pueden abrir y bloquear tablas de privilegios: la tabla ''mysql.host'' no existe (17)

  1. Desinstalar mysql usando yum remove mysql*

  2. Eliminar recursivamente /usr/bin/mysql y /var/lib/mysql

  3. Eliminar el archivo /etc/my.cnf.rmp

  4. Use ps -e para verificar los procesos y asegurarse de que mysql aún no se esté ejecutando.

  5. Reinicie el servidor con reboot

  6. Ejecute yum install mysql-server . Esto también parece instalar el cliente mysql como una dependencia.

  7. Dale propiedad mysql y privelegios de grupo con:

    chown -R mysql /var/lib/mysql

    chgrp -R mysql /var/lib/mysql

  8. Use el service mysqld start para iniciar MySQL Daemon.

Estoy en un servidor que tiene una nueva instalación en RHEL 5. Pude instalar Apache y PHP sin problemas, pero estoy teniendo serios problemas con mi instalación de MySQL. Intenté lo siguiente:

yum install mysql-server mysql

Y no obtuvo ningún error o conflicto. Entonces traté de iniciar mysql con los siguientes comandos:

chkconfig --levels 235 mysqld on service mysqld start

Y se Timeout error occurred trying to start MySQL Daemon.

Revisé mis registros y veo este error:

[ERROR] Fatal error: Can''t open and lock privilege tables: Table ''mysql.host'' doesn''t exist

No estoy seguro de a dónde ir desde aquí.

Como referencia, estoy usando RHEL 5 e instalé las últimas versiones de PHP 5 y Apache.


Acabo de encontrar el mismo problema con mysql 5.7 en OSX:

rm -rf {datadir} mysqld --initialize --datadir {datadir} mysqld --datadir {datadir}


Cuando descargue la versión zip de mysql, si ejecuta mysqld directamente, obtendrá este error: 2016-02-18T07: 23: 48.318481Z 0 [ERROR] Error fatal: No se pueden abrir y bloquear las tablas de privilegios: Tabla ''mysql.user'' no existe 2016-02-18T07: 23: 48.319482Z 0 [ERROR] Aborto

Primero debes ejecutar debajo del comando: mysqld --initialize

Asegúrese de que su carpeta de datos esté vacía antes de este comando.


Después de chown y chgrp ''ing /var/lib/mysql según la respuesta de @Bad Programmer , también puede tener que ejecutar el siguiente comando:

sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql

Luego reinicia tu mysqld .


En CentOS EL 6 y quizás en versiones anteriores, hay una forma de meterse en este mismo lío.

Instale CentOS EL6 con una instalación mínima. Por ejemplo, utilicé kickstart para instalar lo siguiente:

%packages @core acpid bison cmake dhcp-common flex gcc gcc-c++ git libaio-devel make man ncurses-devel perl ntp ntpdate pciutils tar tcpdump wget %end

Encontrará que una de las dependencias de la lista anterior es mysql-libs . Descubrí que mi sistema tiene un my.cnf predeterminado en /etc y contiene:

[mysqld] dataddir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

Cuando compila desde el Generic Linux (Architecture Independent), Compressed TAR Archive su directorio de datos predeterminado es /usr/local/mysql/data que entra en conflicto con el /etc/my.cnf ya presente que define datadir=/var/lib/mysql . Además, el pid-file definido en el mismo archivo no tiene permisos para que el usuario / grupo mysql escriba en /var/run/mysqld .

Un remedio rápido es mv /etc/my.cnf /etc/my.cnf.old que debería hacer funcionar su procedimiento fuente genérico.

Por supuesto, la experiencia es diferente de usar las RPM fuente.


En mi caso, la ruta de la carpeta de datos MySQL tenía un carácter especial "ç" y me hace obtener ...

Error fatal: no se pueden abrir y bloquear tablas de privilegios: la tabla ''mysql.host'' no existe.

He eliminado todos los caracteres especiales y todo funciona.


La raíz de mi problema parecía ser selinux, que se activó automáticamente en la instalación del sistema operativo.

Yo quería mi mysql en / data.

Después de verificar que my.cnf tenía:

datadir=/data/mysql

(y dejando el socket en / var / lib / mysql) ejecuté el comando para apagar selinux para mysqld (la alternativa es apagarlo por completo):

setsebool -P mysqld_disable_trans=1

Ejecuté los siguientes comandos:

> chown -R mysql . > chgrp -R mysql . > mysql_install_db --user=mysql

Inicié el daemon mysql y todo funcionó bien después de eso.


Mi caso en Ubuntu 14.04.2 LTS fue similar a otros con my.cnf, pero para mí la causa fue un ~ / .my.cnf que fue el resto de una instalación anterior. Después de eliminar ese archivo y purgar / reinstalar mysql-server, funcionó bien.


Obtuve un error similar en overlayfs (overlay2) que es el predeterminado en Docker para Mac. El error ocurre al iniciar mysql en la imagen, después de crear una imagen con mysql.

2017-11-15T06:44:22.141481Z 0 [ERROR] Fatal error: Can''t open and lock privilege tables: Table storage engine for ''user'' doesn''t have this option

Cambiar a "aufs" resolvió el problema. (En Docker para Mac, el "daemon.json" se puede editar seleccionando el menú "Preferencias ..." y seleccionando la pestaña "Daemon", y seleccionando la pestaña "Avanzado").

/etc/docker/daemon.json:

{ "storage-driver" : "aufs", "debug" : true, "experimental" : true }

Árbitro:

https://github.com/moby/moby/issues/35503

https://qiita.com/Hige-Moja/items/7b1208f16997e2aa9028


Para mí, tuve que hacer:

yum remove mysql* rm -rf /var/lib/mysql/ cp /etc/my.cnf ~/my.cnf.bkup yum install -y mysql-server mysql-client mysql_install_db chown -R mysql:mysql /var/lib/mysql chown -R mysql:mysql /var/log/mysql service mysql start

Luego pude volver a mis bases de datos y configurarlas de nuevo después de que las desconecté por primera vez.


Si mueve su datadir, no solo necesita dar los permisos del nuevo DataDir, sino que debe asegurarse de que todos los directorios principales tengan permiso.

Moví mi datadir a un disco duro, montado en Ubuntu como:

/media/*user*/Data/

y mi datadir era Bases de datos .

Tuve que establecer permisos para 771 en cada uno de los medios, usuarios y directorios de datos:

sudo chmod 771 *DIR*

Si esto no funciona, otra forma de hacer que mysql funcione es cambiar el usuario en /etc/mysql/my.cnf a root; aunque no hay duda de algunos problemas para hacerlo desde una perspectiva de seguridad.


Si tiene un servidor que solía ejecutar MySQL felizmente, pero ahora ofrece este error, entonces una desinstalación y reinstalación de MySQL es excesiva.

En mi caso, el servidor murió y tomó algunos bloques de disco con él. Esto afectó a algunos archivos, incluidos /var/lib/mysql/mysql/host.frm y /var/lib/mysql/mysql/proc.frm

Afortunadamente, pude copiarlos de otro servidor, y esto me ayudó a superar el error de la tabla.


Solo este comando es suficiente para hacer la magia en centos 6.6

mysql_install_db


También tuve este problema en Arch Linux. El problema fue que pacman instaló el paquete en una ubicación diferente a la que esperaba MySQL. Pude solucionar el problema con esto:

sudo mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/

¡Espero que esto ayude a alguien!


Tuve el mismo problema al tratar de iniciar el servidor y seguí la solución "comprobada". Pero todavía tenía el problema. El problema era que mi archivo /etc/my.cnf no apuntaba a mi datadir designado como se definió cuando ejecuté mysql_install_db con --datadir definido. Una vez que actualicé esto, el servidor comenzó correctamente.


inicializar mysql antes de iniciar en Windows.

mysqld --initialize


mysql_install_db –-user=mysql –ldata=/var/lib/mysql

Trabajó para mí en Centos 7