Imprimir

Servidor de base de datos MySQL en Linux

MySQL (mysql.com, paquetes mysql-server php5-mysql) es una base de datos con arquitectura cliente-servidor, por lo que necesita:

  • un servidor (mysqld) que escuche en el puerto 3306 TCP (por defecto) que atienda las consultas.
  • un cliente (como mysql), que permita conectar con el servidor.

Equivalencias en Windows: MS-SQL Server.

MySQL puede manejarse de varias maneras:

  1. desde consola, utilizando el cliente MySQL mysql.
  2. mediante algún interfaz web como phpMyAdmin (necesita Apache y PHP). Esta es la opción más recomendable, manejar la base de datos vía web usando páginas web dinámicas.
  3. mediante algún frontal gráfico como Knoda o OpenOffice.org.

Recursos

Configuración de MySQL

  • El script de inicio que inicia el demonio de MySQL es /etc/init.d/mysql
  • Los archivos de configuración están en el directorio /etc/mysql
  • Las bases de datos están en /var/lib/mysql/<base_de_datos>
  • Los usuarios de MySQL son independientes de los usuarios del sistema: el usuario root de MySQL no es el usuario root de Linux. Con los usuarios de MySQL haremos lo siguiente:
    • mysql: crearemos este usuario con todos los permisos: será el que utilicemos en nuestros scripts y para acceder a las bases de datos.
    • root: existe por defecto y sin contraseña. Lo borraremos.

      Atención

      ¡Antes de borrar el usuario root de MySQL crear el usuario mysql!

    • debian-syst-main: existe por defecto, con contraseña, lo utiliza MySQL en los scripst de inicio y parada. Ni tocarlo, es un usuario de sistema

Manejar MySQL desde consola

Para conectar con el servidor MySQL usaremos el comando mysql, cuya sintaxis es:

$ mysql -h <host> -u <usuario> datababse=<base_de_datos> -p
  • -h: host donde está el servidor (por defecto localhost).
  • -u: usuario.
  • -p: password.
  • -P: puerto.
  • database=: nombre de la base de datos a abrir.

Por ejemplo (el prompt de MySQL nos indica está listo para recibir comandos):

$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 5.0.18-Debian_9-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Como vemos, hemos entrado como root sin contraseña. Usaremos el comando SHOW para ver las bases de datos existentes:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
3 rows in set (1.32 sec)

La base de datos mysql contiene la información de los privilegios de los usuarios de MySQL.

Para poner contraseña a root haremos:

mysql> SET PASSWORD FOR root@localhost=PASSWORD('root_clave');

Nos desconectamos ejecutando:

mysql> quit
Bye

Intentamos entrar como antes pero no nos deja:

$ mysql -u root
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

Ahora necesitamos contraseña:

$ mysql -u root -p
Enter password: ******
mysql>

Veamos un pequeño ejemplo:

  • crear la base de datos animales:
    mysql> CREATE DATABASE animales;
    Query OK, 1 row affected (1.02 sec)
  • consultar las bases de datos existentes:
    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | animales           |
    | mysql              |
    +--------------------+
    4 rows in set (1.02 sec)
  • abrir animales:
    mysql> USE animales;
    Database changed
  • crear la tabla mascotas:
    mysql> CREATE TABLE mascotas(nombre VARCHAR(20), especie VARCHAR(20));
    Query OK, 0 rows affected (0.89 sec)
  • consultar las tablas de animales:
    mysql> SHOW TABLES;
    +---------------------+
    | Tables_in_animales  |
    +---------------------+
    | mascotas            |
    +---------------------+
    1 row in set (0.00 sec)
  • consultar la estructura de mascotas:
    mysql> DESCRIBE mascotas;
    +-----------+-------------+------+-----+---------+-------+
    | Field     | Type        | Null | Key | Default | Extra |
    +-----------+-------------+------+-----+---------+-------+
    | nombre    | varchar(20) | YES  |     | NULL    |       |
    | especie   | varchar(20) | YES  |     | NULL    |       |
    +-----------+-------------+------+-----+---------+-------+
    2 rows in set (0.14 sec)
  • para terminar, nos desconectamos:
    mysql> quit

Comprobar que funciona PHP con MySQL

Una vez creada la base de datos en MySQL, vamos a comprobar que podemos acceder a ella mediante el navegador utilizando el servidor Apache y PHP. Para ello vamos a crear una página web (/var/www/conectar.php) que nos diga si se consigue una conexión con nuestra base de datos en MySQL, que contendrá lo siguiente:

<html>
  <body>
    <?php
    function Conectarse() {
      if (!($link=mysql_connect("localhost","root","root_clave"))) {
        echo "Error conectando a la base de datos.";
        exit();
      }
      if (!mysql_select_db("animales",$link)) {
        echo "Error seleccionando la base de datos.";
        exit();
      }
      echo "Conexion con la base de datos conseguida.<br>";
      return $link;
    }
    $link=Conectarse();
    mysql_close($link);
    echo "Conexion con la base de datos cerrada.<br>Fin.";
    ?>
  </body>
</html>

Tecleamos en el navegador la dirección http://127.0.0.1/conectar.php y, si todo está correcto, obtendremos:

PHP con MySQL

14 Comentarios en “Servidor de base de datos MySQL en Linux”

  • Edgar, Ruben, Fernando, Vanessa y Kokal dice:

    Gracias… muchas gracias.. fue de extrema ayuda

  • pablo dice:

    exelente aporte, pero cuando me meto a la consola, me meto al mysql, pero de ahi intento crear la BD
    mysql> create database miBASED
    >(eso, no paso nada)
    >(aprete enter, y nada)
    >(intento salir)
    >quit
    >(y nada)
    >exit (tampoco, ni salir , ni chao, ni adios, nada)
    si sabes por que me falta, el servidor apache funciona y php tambien esta instalado (php5)
    eso vale

  • crash-n-burn dice:

    pablo, los comandos terminan con ‘punto y coma’ (;)…

  • frdmilor dice:

    Gracias por el aporte, me fue de gran ayuda.

  • yeris dice:

    Muy buen explicado, gracias y sigue asi

  • checolais dice:

    Felicidades por la aportación de este manual, muchas gracias por la ayuda

  • Daniel dice:

    Muy bueno justo lo que buscaba, uso mysql en win pero en linux estaba medio perdido
    Gracias

  • Marco Castañeda dice:

    Hola:

    Me fije que cuando uno trabaja con este asunto de mysql hay que escribir todo en mayúscula y terminado en punto y comas, sino simplemente salta una linea y mustra
    >
    >
    >
    >
    asi que todo en mayúscula excepto claro el nombre de tu base de datos, los campos, las tablas, etc.. los cuales no son obligatorias en mayuscula o miniscula.

    Los tipos de datos tambien hay que escribirlos con mayuscula sino tampoco funcionan (Esta es mi experiencia personal usando mysql-server y Ubuntu 8.10 asique no se si en otros casos podría funcionar así o no.

    Espero sirva a alguien. Saludos desde Vaparaiso, Chile.

    Olvidaba que para los que no puedan salir y solo les salga
    >
    >
    >
    hay que escribir \q

    es decir:
    >\q y saldrán sin problemas

  • ramon izquierdo dice:

    hola saludos esta muy bien todo pero lo que no entendi es como asignar la clave principal directamente desde consola

  • juan jose dice:

    disculpen alguien me puede ayudar se los supliko de manera mas atenta porfavor ..me encargarn como trabajo final una base de datos en mysql y ke jale en internet.. debo de hacer una agenda..segun yoo asi empeze

    mysql^^show database
    mysql^^create database agenda_2009
    mysql^^show table
    mysql^^show table usuario(
    mysql^^nombre VARCHAR(20), domicilio VARCHAR(20)colonia VARCHAR(20)
    BUENO DE AHI NO SE KE ONDA DIGANME SI VOY BIEN O KE PEX PORFA,, KE PASO SIGUE PARA HACER LA BASE DE DATOS

  • Junior dice:

    AL FIN ENCONTRÉ ALGO QUE SIRVE!!!!!

    Muchisimas gracias!!!!……me has quitado 10 toneladas de encima!!!! :D

  • Abraham dice:

    Buenos dias, será que alguno de ustedes me ayudan a crear un script o no se una base de datos, donde:
    * puedan cargar las notas de un alumno y el formulario debe tener lo sigueinte.

    -Nombre
    -Apellido
    -C.I (Cedula de Identidad)
    -Semestre
    -Carrera
    -Notas del Primer Parcial
    -Notas del Segundo Parcial
    -Notas del Final
    -Reparacion

    * Y que cuando ellos cuando vallan a consultarlas mediante un formulario de consulta puedan hacerlo mediante su cedula. Muchas Gracias y se los agradezco con el alma, o pues si tambien me hacen un tutorial de paso a paso y disculpen la molestias y de ante mano que Dios se los pague. mi correo es abraham@hostguard.com.ve

  • Luis dice:

    Perfecto Me resulto todo bien

  • sugusmen dice:

    bua esta bueno pero necesito una lap para probar ………..

Deja un comentario