Gestionar Mysql por línea de comandos. Comandos básicos

Si, como nosotros a veces, tenéis que gestionar bases de datos Mysql por línea de comandos (porque, por seguirdad, no admita gestión web por phpMyadmin), seguramente os olvidaréis de los comandos. Nosotros no estamos todo el día trabajando con Mysql, y usamos muchos tipos de lenguaje, así que solemos olvidarnos de los detalles. Os dejamos aquí los comandos que más necesitaréis.

Recordad que esto es una guía MUY básica.

  • Acceder a mysql. Lo ideal es acceder un un usuario que tenga permisos totales para las bases de datos o permisos tipo root. Aunque en muchos sistemas el usuario root no puede entrar en mysql. Todo depende de cómo hayas configurado el sistema. En Debian al instalar creo que lo llama debian-sys-maint.
    No es buena idea poner tu contraseña de mysql en línea de comandos, así que lo mejor para acceder es:mysql -u nombreusuario -p
  • Mostrara las bases de datos:
    show databases;
  • Acceder a una base de datos:
    use nombrebasededatos;
  • Mostrar tablas de una base de datos:
    show tables;
  • Crear una base de datos: 
    CREATE DATABASE nombrebasededatos;
  • Borrar una base de datos:
    DROP DATABASE nombrebasededatos;
  • Ver una lista de usuarios: 
    select user,host from mysql.user;
  • Ver los permisos de un usuarios: 
    show grants for ‘nombredeusuario‘@’%’;% es localhost, si eso otra máquina es:
    show grants for ‘nombredeusuario‘@’ipdelservidor‘;
  • Crear un usuario:
    CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'tu_contrasena';
  • Dar permisos a un usuario en una base de datos. En general, para todos los permisos es:
    GRANT ALL PRIVILEGES ON nombredelabasededatos.* TO 'usuario'@'servidor';

    Todo esto puede ampliarse con los permisos de Mysql y las opciones. Por ejemplo para una tabla sólo:

    GRANT ALL PRIVILEGES ON nombredelabasededatos.tabla TO 'usuario'@'servidor';

    Por ejemplo si quieres crear otro super-usuario:

    GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'servidor';
  • Quitar permisos para un usuario:

    REVOKE permission ON nombrebasededatos.tabla FROM 'user'@'localhost';
  • Hacer copia de seguridad de la base de datos. Para esto es mejor hacerlo desde FUERA de Mysql, desde el shell del servidor, la línea de comandos de Linux, usando Mysqldump.$ mysqldump -u nombreusuario -p nombrebasededatos > nombrefichero.sql';
    Para exportar una tabla:mysqldump -p --user=username database_name tableName > tableName.sql

    Esto lo copiará a la ruta donde estés en Linux. Más avanzado:$mysqldump --user=nombreusuario -p --all-databases > nombrefichero$(date +%Y-%m-%d-%H.%M.%S).sql;

    Esto hace una copia de todas las bases de datos a un fichero donde pone fecha al final del nombre.
    Recordad que todo esto se puede poner en un fichero para hacer copias cada cierto tiempo.
  • Importar fichero a una base de datos.
    Se puede hacer de dos maneras.
    1) Mysqldump.

     mysql -p -u username database_name < filename.sql 

    O para una tabla:

    mysql -u username -p -D database_name < tableName.sql

    2)Desde dentro de mysql (la que uso yo)
    Entrar en la base de datos con:
    use basededatos;
    Importar el fichero con source:

    source rutaalfichero/nombredelfichero.sql;

Iremos poniendo más según vayamos echando en falta algún comando.