MySQL en Slackware con seguridad desde el inicio. RAPIDON.... - Confirmar si existe el paquete: $ ls -l /var/log/packages/ | grep mysql -rw-r--r-- 1 root root 14341 2005-02-12 20:12 mysql-4.0.23a-i486-1 - Crear bases de datos iniciales: # su - mysql $ mysql_install_db - Comprobar permisos de los directorios de las db: $ ls -ld /var/lib/mysql drwxr-x--- 4 mysql mysql 96 2005-04-18 22:23 /var/lib/mysql/ - Hacer ejecutable el script de arranque de mysqld # chmod +x /etc/rc.d/rc.mysqld - Confirmar que sea ejecutable para que inicie al arranque del sistema: # v /etc/rc.d/rc.mysqld -rwxr-xr-x 1 root root 2260 2005-01-25 19:47 /etc/rc.d/rc.mysqld* - Iniciar mysqld # /etc/rc.d/rc.mysqld start - Comprobaciones iniciales: $ /usr/bin/mysqladmin version $ /usr/bin/mysqladmin variables $ /usr/bin/mysqladmin -u root shutdown # /etc/rc.d/rc.mysqld stop # /etc/rc.d/rc.mysqld start # mysqlshow +-----------+ | Databases | +-----------+ | mysql | | test | +-----------+ $ # mysqlshow mysql Database: mysql +--------------+ | Tables | +--------------+ | columns_priv | | db | | func | | host | | tables_priv | | user | +--------------+ # - Conifguraciones previas de seguridad: $ mysql -u root mysql> mysql> use mysql; -------- mysql> select host,db,user from db; +------+---------+------+ | host | db | user | +------+---------+------+ | % | test | | | % | test\_% | | +------+---------+------+ 2 rows in set (0.00 sec) --------- mysql> drop database test; Query OK, 0 rows affected (0.02 sec) mysql> delete from db; mysql> FLUSH PRIVILEGES; mysql> quit $ mysql -u root mysql> use mysql; mysql> select host,user,password from user; +-----------+------+----------+ | host | user | password | +-----------+------+----------+ | localhost | root | | | proxy | root | | | proxy | | | | localhost | | | +-----------+------+----------+ 4 rows in set (0.00 sec) mysql> DELETE FROM user WHERE NOT (host="localhost" AND user="root"); mysql> FLUSH PRIVILEGES; mysql> quit - Poner contraseña al root de mysql: $ mysql -u root mysql> use mysql; mysql> SET PASSWORD FOR root@localhost=PASSWORD('tu contraseña'); mysql> SELECT host,user,password FROM user; mysql> FLUSH PRIVILEGES; mysql> quit - OPCIONAL Si se desea cambiar la contraseña del usuario root de mysql: mysql> UPDATE user SET Password=PASSWORD('password') WHERE user='root'; mysql> FLUSH PRIVILEGES; mysql> quit - Cambiar nombre de usuario root de mysql: $mysql -u root -p mysql> use mysql; mysql> update user set user="mydbadmin" where user="root"; mysql> FLUSH PRIVILEGES; mysql> quit - Reiniciar MySQL: # /etc/rc.d/rc.mysqld stop # /etc/rc.d/rc.mysqld start - Eliminar rastros: $ cat /dev/null > ~/.mysql_history - Configurar soporte para socket TCP/IP y no solo socket unix. # vim /etc/rc.d/rc.mysqld SKIP="--skip-networking" # /etc/rc.d/rc.mysql restart Agregar un usuario administrador con todos los permisos para todas las bases de datos: - Agregar usuario administrador (monty) con todos los privilegios para todas las bases de datos (*.*) que solo se pueda conectar desde el localhost (@localhost), con contraseña: some_pass y que tenga la opcion GRANT: mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION; - Agregar usuario administrador (monty) con todos los privilegios para todas las bases de datos (*.*) que se pueda conectar desde cualquier host (@'%'), con contraseña: some_pass y que tenga la opcion GRANT: mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION; - Agregar usuario normal (userdb) con todos los privilegios para todas la base de datos (dbname.*) que solo se pueda conectar desde el localhost (@'localhost'), con contraseña: 'Secret15'. mysql> GRANT ALL on dbname.* to userdb@'localhost' -> IDENTIFIED BY 'Secret15'; Referencias: MySQL 3.23, 4.0, 4.1 Reference Manual: http://dev.mysql.com/doc/refman/4.1/en/index.html MySQL 5.0 Reference Manual: http://dev.mysql.com/doc/refman/5.0/en/index.html FIN. Autor: Jorge Armando Medina. email: jmedina@tuxjm.net Sitio Web: http://www.tuxjm.net Visita la pagina del Grupo de Usuarios Linux Tijuana en: http://www.linuxtj.org