Escenario 1: aparece al depurar un programa web para acceder a una base de datos
Escenario 2: al iniciar sesión en MySQL, distinga entre inicio de sesión local en el host local e inicio de sesión remoto. Incluso si puede iniciar sesión localmente, no puede iniciar sesión de forma remota sin autorización
Razones para el análisis: (distinguir) Cuando tal situación ocurre localmente, la contraseña es incorrecta, busque la contraseña correcta o cámbiela; al iniciar sesión de forma remota, primero determine si la contraseña de inicio de sesión es correcta y, en segundo lugar, determine si está autorizada de forma remota. . En vista de las dos situaciones anteriores, se dan soluciones.
Caso 1 Solución: Modificar la contraseña de la base de datos local
Método 1: utilice el comando SET PASSWORD
para iniciar sesión en MySQL primero.
Formato: mysql> establecer contraseña para nombre de usuario@localhost = contraseña('nueva contraseña');
Ejemplo: mysql> establecer contraseña para root@localhost = contraseña('123');
Método 2: Utilice
el formato mysqladmin: mysqladmin -u nombre de usuario -p contraseña anterior contraseña nueva contraseña
Ejemplo: mysqladmin -uroot -p123456 contraseña 123
Método 3: Edite la tabla de usuarios directamente con UPDATE
Primero inicie sesión en MySQL.
mysql> usar mysql;
mysql> actualizar conjunto de usuario contraseña=contraseña('123') donde usuario='root' y host='localhost';
mysql> privilegios de vaciado;
Método 4: cuando olvide la contraseña de root, puede hacer esto.
Tome Windows como ejemplo:
- Cierre el servicio MySQL en ejecución.
- Abra una ventana de DOS y vaya al directorio mysql\bin.
- Ingrese mysqld --skip-grant-tables y presione Enter. --skip-grant-tables significa omitir la autenticación de la tabla de permisos al iniciar el servicio MySQL.
- Abra otra ventana de DOS (porque la ventana de DOS de ahora ya no se puede mover) y vaya al directorio mysql\bin.
- Ingrese mysql y presione Enter. Si tiene éxito, aparecerá el mensaje MySQL >.
- Conectar la base de datos de permisos: use mysql; .
- Cambie la contraseña: actualice el conjunto de usuario contraseña=contraseña("123") donde usuario="root"; (no olvide agregar un punto y coma al final).
- Actualizar privilegios (paso obligatorio): vaciar privilegios;
- Abandonar.
- Cierre sesión en el sistema, ingrese nuevamente e inicie sesión con el nombre de usuario root y la nueva contraseña 123 que acaba de configurar.
Solución del caso 2: autorización remota
1. Primero inicie sesión con localhost (ingrese MySQL) mysql -u root -p
Ingrese la contraseña: (ingrese la contraseña)
2. Ejecute el comando de autorización
mysql> conceda todos los privilegios en . a root@'%' identificado por '123'; (tenga en cuenta el ";" después de la declaración)
Consulta correcta, 0 filas afectadas (0.07 seg)
3. Salga y vuelva a intentarlo: mysql> quit
4. Intente iniciar sesión nuevamente: mysql -u root -h 192.168.194.142 -p
Ingrese la contraseña:
El resultado muestra: Bienvenido al monitor MySQL. Los comandos terminan en ; o \ g.
Su ID de conexión MySQL es 3
significa éxito
Hablemos en detalle sobre cómo autorizar usuarios.
mysql> otorga autoridad 1, autoridad 2, ... autoridad n en el nombre de la base de datos, nombre de la tabla al nombre de usuario@dirección de usuario identificada por 'contraseña de conexión';
Permiso 1, permiso 2, ... permiso n representa seleccionar, insertar, actualizar, eliminar, crear, eliminar, indexar, alterar, otorgar, referencias, recargar, apagar, procesar, archivar y otros 14 permisos.
Cuando la autoridad 1, la autoridad 2, ... la autoridad n se reemplaza por todos los privilegios o todos, significa otorgar todos los derechos al usuario.
Cuando el nombre de la base de datos.nombre de la tabla se reemplaza por . , significa que el usuario tiene la autoridad para operar todas las tablas en todas las bases de datos del servidor.
La dirección de usuario puede ser localhost o dirección IP, nombre de máquina y nombre de dominio. También puedes utilizar '%' para conectarte desde cualquier dirección.
La 'Contraseña de conexión' no puede estar vacía; de lo contrario, la creación fallará.
Para dar algunos ejemplos:
mysql> otorgar selección, insertar, actualizar, eliminar, crear, colocar en vtdc.employee a [email protected] identificado por '123';
asignar al usuario joe de 10.163.225.87 al empleado que puede acceder a la base de datos vtdc Enumere los permisos para operaciones como seleccionar, insertar, actualizar, eliminar, crear, soltar, etc., y establezca la contraseña en 123.
mysql> otorga todos los privilegios en vtdc.* a [email protected] identificado por '123';
asigna al usuario joe de 10.163.225.87 la autoridad para realizar todas las operaciones en todas las tablas de la base de datos vtdc y establece la contraseña en 123.
mysql> otorga todos los privilegios en . a [email protected] identificado por '123';
asigna al usuario joe de 10.163.225.87 la autoridad para realizar todas las operaciones en todas las tablas de todas las bases de datos y establece la contraseña en 123.
mysql> otorga todos los privilegios en . a joe@localhost identificado por '123';
asigna al usuario local joe la autoridad para realizar todas las operaciones en todas las tablas de todas las bases de datos y establece la contraseña en 123. Caso: autorización remota