Este documento ofrece soluciones para problemas frecuentes de instalación, configuración y gestión de MySQL con el fin de ayudarle a mantener un servidor estable.
Contraseñas olvidadas de usuarios de MySQL
Si olvida la contraseña de un usuario que no es root, puede utilizar el usuario root para cambiarla directamente. Si olvida la contraseña del usuario root, debe detener el servicio de MySQL y reiniciarlo en un modo especial que omite las comprobaciones de permisos. Esto le permite restablecer la contraseña.
Contraseña olvidada para un usuario que no es root
-
Consulte el valor
Hostdel usuario objetivo.# Replace with the actual username mysql -uroot -p -e "SELECT Host FROM mysql.user WHERE User = 'target_username';" -
Cambie la contraseña según el valor
Host. Si el usuario tiene varios valoresHost, debe ejecutar el comando para cada uno.# Replace with the actual username, password, and Host mysql -uroot -p -e "ALTER USER 'target_username'@'target_host' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES;"
Contraseña olvidada del usuario root
Restablecer la contraseña del usuario root requiere detener el servicio de MySQL.
-
Para detener el servicio de MySQL, ejecute el siguiente comando.
Alibaba Cloud Linux y CentOS
sudo systemctl stop mysqldUbuntu y Debian
sudo systemctl stop mysql -
Inicie MySQL en modo temporal y anote el ID del proceso. Necesitará este ID para finalizar el proceso más adelante.
Nota--skip-grant-tables: Omite la validación de permisos y permite iniciar sesión sin contraseña.&: Ejecuta el proceso de MySQL en segundo plano. La terminal devuelve un ID de proceso (PID). Por ejemplo, en la salida[1] 1234, el PID es1234.
sudo -u mysql mysqld --skip-grant-tables & -
Recargue las tablas de autorización y cambie la contraseña de root. Reemplace
<password>con su nueva contraseña. La contraseña debe cumplir con la política de contraseñas actual: como mínimo 8 caracteres de longitud, que contenga al menos una letra mayúscula, una letra minúscula, un dígito y un carácter especial.mysql -uroot -e"FLUSH PRIVILEGES;" -e"ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';"Si recibe el error
Your password does not satisfy the current policy requirements, significa que su contraseña no cumple con los requisitos. Debe finalizar el proceso de MySQL, reiniciarlo en el modo que omite permisos y volver a ejecutar el comando con una contraseña válida. -
Finalice el proceso de MySQL.
kill <process ID> -
Para iniciar el servicio de MySQL, ejecute el siguiente comando.
Alibaba Cloud Linux y CentOS
sudo systemctl start mysqldUbuntu y Debian
sudo systemctl start mysql -
Inicie sesión con la nueva contraseña. Si logra acceder a la línea de comandos de MySQL, el restablecimiento de la contraseña fue exitoso.
mysql -u root -p
Cambio del directorio de datos de MySQL
-
Para detener el servicio de MySQL, ejecute el siguiente comando.
Alibaba Cloud Linux y CentOS
sudo systemctl stop mysqldUbuntu y Debian
sudo systemctl stop mysql -
En el archivo de configuración
my.cnf(ubicado generalmente en/etc/my.cnf), cambie el valordatadirpor la ruta del nuevo directorio de datos.datadir=/new/data/directory -
Copie todos los archivos y directorios del directorio de datos original al nuevo directorio de datos.
sudo cp -aR /old/data/directory/* /new/data/directory/ -
Para iniciar el servicio de MySQL, ejecute el siguiente comando.
Alibaba Cloud Linux y CentOS
sudo systemctl start mysqldUbuntu y Debian
sudo systemctl start mysql
Error de inicio de MySQL: Permission denied
-
Revise el archivo
error.logde MySQL para localizar el mensaje de error específico.NotaLa ubicación predeterminada de este archivo suele ser
/var/log/mysqld.logo/var/log/mysql/error.log.[ERROR] [MY-010092] [Server] Can't start server: can't create PID file: Permission denied -
Busque y finalice cualquier proceso
mysqldpendiente.sudo ps aux | grep mysqld sudo kill -9 <process ID> -
Para iniciar el servicio de MySQL, ejecute el siguiente comando.
Alibaba Cloud Linux y CentOS
sudo systemctl start mysqldUbuntu y Debian
sudo systemctl start mysql
Error de inicio de MySQL: File './binlog.index' not found
-
Revise el archivo
error.logde MySQL para localizar el mensaje de error específico.NotaLa ubicación predeterminada de este archivo suele ser
/var/log/mysqld.logo/var/log/mysql/error.log.mysqld: File './binlog.index' not found (OS errno 13 - Permission denied) -
Este error suele deberse a una propiedad de archivos incorrecta en el directorio de datos de MySQL. Ejecute el siguiente comando para comprobar la propiedad.
NotaEl directorio de datos predeterminado suele ser
/var/lib/mysql. Si utiliza un directorio de datos personalizado, modifique el comando en consecuencia.sudo ls -l /var/lib/mysql-rw-r----- 1 root root 56 Mar 19 15:51 auto.cnf -rw-r----- 1 root root 1551 Mar 19 15:51 binlog.000001 -rw-r----- 1 root root 16 Mar 19 15:51 binlog.index -rw------- 1 root root 1680 Mar 19 15:51 ca-key.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 ca.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 client-cert.pem -
Ejecute el siguiente comando para asignar la propiedad correcta al usuario y grupo
mysql.sudo chown -R mysql:mysql <data_directory> -
Para iniciar el servicio de MySQL, ejecute el siguiente comando.
Alibaba Cloud Linux y CentOS
sudo systemctl start mysqldUbuntu y Debian
sudo systemctl start mysql