Al utilizar MySQL, no se pueden ignorar los problemas de seguridad. Las siguientes son 23 notas solicitadas por MySQL:
1. Si la conexión entre el cliente y el servidor necesita abarcar y pasar a través de una red que no es de confianza, entonces necesita usar un túnel SSH para cifrar la comunicación de la conexión.
2. Utilice la declaración de contraseña establecida para cambiar la contraseña del usuario en tres pasos, primero inicie sesión en el sistema de base de datos con "mysql -u root", luego "mysql> update mysql.user set password=password('newpwd')". y finalmente ejecutar "privilegios de vaciado" será suficiente.
3. Los ataques contra los que es necesario protegerse incluyen antiespionaje, manipulación, repetición, denegación de servicio, etc., que no implican disponibilidad ni tolerancia a fallos. Todas las conexiones, consultas y otras operaciones se completan utilizando medidas de seguridad basadas en ACL (lista de control de acceso). También hay cierto soporte para conexiones SSL.
4. Cualquier otro usuario, excepto el usuario root, no puede acceder a la tabla de usuarios en la base de datos principal de MySQL
una vez que se filtra la contraseña de usuario cifrada almacenada en la tabla de usuarios, otros pueden usar la base de datos correspondiente con el nombre de usuario/contraseña a voluntad;
5. Utilice declaraciones de concesión y revocación para realizar el control de acceso de los usuarios;
6. No utilice contraseñas de texto sin formato,pero
utilice funciones hash unidireccionales como md5() y sha1() para establecer contraseñas
; en los caracteres del diccionario como contraseña
8. Use un firewall para eliminar el 50% de los peligros externos y deje que el sistema de base de datos funcione detrás del firewall, o colóquelo en el área DMZ
9. Use nmap para escanear el puerto 3306 desde Internet
;, o use telnet server_host La prueba del método 3306 no puede permitir el acceso al puerto TCP 3306 del servidor de la base de datos desde una red que no es de confianza, por lo que se deben realizar configuraciones en el firewall o enrutador
10. Para evitar que se pasen parámetros ilegales de manera maliciosa; , como donde ID=234, otros. Pero ingresar donde ID=234 O 1=1 hace que se muestre todo, así que use '' o "" para usar cadenas en el formulario web y agregue %22 a la URL dinámica para representar comillas dobles,% 23 para representar el signo de almohadilla y% 27 representa una comilla simple, es muy peligroso pasar valores no verificados a la base de datos mysql
11.
Verifique el tamaño al pasar datos a mysql;
para conectarse a la base de datos debe usar cuentas de usuario generales y solo abrir algunas necesarias. Se otorgan permisos al usuario
13. Usar funciones específicas de 'carácter de escape' en varias interfaces de programación (C C++ PHP Perl Java JDBC, etc.);
cuando utilice la base de datos mysql en Internet, asegúrese de transmitir menos datos de texto sin formato y utilice SSL y SSH. Se transmiten datos cifrados
14. Aprenda a utilizar tcpdump y herramientas de cadenas para comprobar la seguridad de los datos transmitidos, como tcpdump -l. -i eth0 -w -src o dst puerto 3306 cadenas. Inicie el servicio de base de datos mysql como un usuario normal;
15. No utilice el símbolo de enlace a la tabla, seleccione el parámetro --skip-symbolic-links
16. Asegúrese de que solo el usuario que inicia el servicio de base de datos en el directorio mysql; puede leer y leer archivos.
17. No se permite otorgar permisos de proceso o super a usuarios no administrativos. La lista de procesos de mysqladmin puede enumerar el texto de la consulta ejecutada actualmente y se puede usar para cortar conexiones de clientes y cambiarlos. el estado de los parámetros operativos del servidor y controlar la copia y replicación de las bases de datos del servidor.
18. No se otorgan permisos de archivos a usuarios que no sean administradores para evitar el problema de cargar datos '/etc/passwd' en la tabla y luego usar select para mostrar. it
19. Si no confía en los servicios de la compañía de servicios DNS, solo puede configurar direcciones numéricas IP en la tabla de permisos de nombres.
20. Utilice la variable max_user_connections para habilitar el proceso de servicio mysqld para limitar el número de conexiones; una cuenta especificada;
21. La declaración de concesión también admite opciones de control de recursos;
22. Inicie el cambio de opción de seguridad del proceso de servicio mysqld, --local-infile=0 o 1. Si es 0, el programa cliente no puede usar la carga local. datos Un ejemplo de concesión de inserción (usuario) en mysql.user a 'nombre_usuario'@'nombre_host' si se usa: el sistema skip-grant-tables no implementará ningún control de acceso para el acceso de ningún usuario, pero puede usarlo. mysqladmin Flush-privileges o mysqladmin reload para habilitar el control de acceso de forma predeterminada, la declaración show Databases está abierta a todos los usuarios y puede usar --skip-show-databases para desactivarla.
23. Cuando encuentre el error 1045 (28000) Acceso denegado para el usuario 'root'@'localhost' (Usando contraseña:NO), debe restablecer la contraseña. El método específico es: primero comience con --skip-grant. -tables parámetro mysqld, luego ejecute mysql -u root mysql,mysql>update user set contraseña=contraseña('nuevacontraseña') donde usuario='root';mysql>Flush privilegios;, y finalmente reinicie mysql.