aptitude install mysql-server-5.0 mysql-client-5.0
Archivo de configuracion de mysql esta en:
/etc/mysql/my.cnf
renombrar la linea
bind-address = 127.0.0.1
para poderse conectar desde cualquier lado, tambien se puede colocar la ip desde donde queremos que se conecte solamente
mysql-query-browser: cliente grafico para conetarse a las bases de datos, tambien se puede usar phpmyadmin, abrimos un navegador colocamos el nombre o la ip del servidor seguido de /phpmyadmin
El usuario root de mysql por defecto tiene la clave en blanco por lo que es primordial colocarle una inmediatamente despues de instalar mysql
Coloque una clave para el usuario root
de MySQL cuando ingrese desde localhost
en la consola (no recomendado) con:/usr/local/bin/mysqladmin -u root password 'nueva-clave'
Recordemos limpiar el historial para que no quede ese ultimo comando grabado y se pueda ver la contraseña:
history -c
- Desde el mysql (Recomendado):
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password=PASSWORD('password') WHERE user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> quit
bye
Ahora que asignamos una contraseña al usuario root comprobaremos que ya no puede acceder sin la contraseña:
$mysql -u root
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
Para poder acceder como usuario "root" haremos uso del parametro "-p" para usar validación por contraseña:$mysql -u root -p
Enter password:
De esta manera solo podras acceder como root con una contraseña
Ahora comprobamos con esto:
mysql> use mysql;Como podemos ver, el usuario "root" desde 'localhost' necesita contraseña (la cual se muestra cifrada) para acceder, lo cual es recomendable.
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
mysql> SELECT host,user,password FROM user;
+-----------+------+------------------+
| host | user | password |
+-----------+------+------------------+
| localhost | root | 565491d704013245 |
+-----------+------+------------------+
1 row in set (0.00 sec)
mysql>
Nuevamente refrescamos los privilegios así:
mysql> FLUSH PRIVILEGES;Y salimos:
Query OK, 0 rows affected (0.00 sec)
mysql> quit
bye
Ahora mencionaremos una medida mas de seguridad la cual también es recomendable y consiste en cambiar el nombre por default de la cuenta administrador de mysql (root), a algun nombre diferente que pueda ser mas dificil de adivinar. Este cambio hara mas dificil utilizar un ataque de fuerza bruta o con diccionario a la cuenta de administrador. En tal caso el intruso tendra que adivinar el password, pero primero el nombre de la cuenta de administrador, esto se hace así:
mysql> use mysql;
mysql> update user set user="mydbadmin" where user="root";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Ahora como ultimo test apagaremos el servicio mysqld así:
# /etc/rc.d/rc.mysqld stop
Y comprobaremos que lo podamos reiniciar con:# /etc/rc.d/rc.mysqld start
Bien, ahora nuestro servidor MySQL ya está correctamente instalado y configurado con las medidas de seguridad apropiadas.
Finalmente debemos de eliminar el contenido del historial de MySQL (~/.mysql_history), en el cual todos los comandos SQL ejecutados han sido almacenados (especialmente passwords, los cuales son almacenados en texto plano).
$ cat /dev/null > ~/.mysql_history
NOTA: Como podemos ver en el comando anterior, fue ejecutado como usuario normal, ya que las tareas de cambiar contraseñas fueron hechas con un usuario normal.
*NOTA: este procedimiento deberá de ser aplicado para todas las cuentas con las que se ha estado trabajando (si es que si hicieron las pruebas con un usuario normal y con el usuario root del sistema).
Crear una cuenta de usuario en la base de datos:
mysql> GRANT ALL ON basededatos.* TO ‘user’@'hosts’ IDENTIFIED BY ‘pass’;
donde host puede ser la ip de la maquina que se va a conectar
Algunas operaciones usuales del administrador son:
SHOW DATABASES;
muestra todas las bases disponibles.
USE base1;
permite usar la base base1.
SHOW TABLES;
que muestra todas las tablas de la base activa.
DESCRIBE tabla;que presentan estructura de la tabla.
SHOW CREATE TABLE tabla;
Crear base de Datos:
create database nombre_de_bdd
Remplazar base de datos:
~# mysql -u root -p nombre_bdd < /ruta/nueva_bdd/ bdd.sql
Realizar dump (respaldo de la bdd):
mysqldump -u root -p nombre_bdd > nombre_del_respaldo.sql
y posteriormente restaurarla con:
Para sacar una copia de respaldo de todas las bases de datos con:
# mysqldump --force -p --all-databases > /respaldomysql/dump-1nov2007.sql
y posteriormente restaurarla con:
El manual de MySQL: http://www.mysql.com/documentation/mysql/bychapter/index.html
Ayuda para cambiar clave de root en sistemas Linux: