- Estréllate y Arde - https://www.estrellateyarde.org -

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


Article printed from Estréllate y Arde: https://www.estrellateyarde.org

URL to article: https://www.estrellateyarde.org/discover/servidor-base-de-datos-en-linux

Copyright © 2010 Estrellate y Arde