MySQL

Instalación

Debian GNU/Linux · Sarge

MySQL 4.0

# apt-get install mysql-server

MySQL 4.1

# apt-get install mysql-server-4.1

Conexión

MySQL Client

mysql -u <usuario> -h <host> -P <puerto> <database> -p

$ mysql -u root -p 
Enter password: 
Welcome TO the MySQL monitor.  Commands end WITH ; OR \g.
Your MySQL connection id IS 89 TO server version: 4.1.11-Debian_4-log
 
Type 'help;' OR '\h' FOR help. Type '\c' TO clear the buffer.
 
mysql>

Trabajando con Bases de Datos

Creación de BBDD

mysql> CREATE DATABASE irontec_db;
Query OK, 1 row affected (0.03 sec)

Selección de BBDD

Cambiar o elegir base de datos a utilizar:

mysql> USE irontec_db; 
DATABASE changed

Ver la base de datos seleccionada:

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| irontec_db |
+------------+
1 row IN SET (0.00 sec)

Eliminación de BBDD

mysql> DROP DATABASE irontec_db;
Query OK, 0 rows affected (0.60 sec)

Trabajando con Usuarios / Privilegios

Creación de Usuarios

Usuarios con todos los privilegios:

mysql> GRANT ALL PRIVILEGES ON irontec_db.* TO irontec_user_allpriv@localhost IDENTIFIED BY 'irontec_pass';
Query OK, 0 rows affected (0.14 sec)

Usuarios sin privilegios (solo introduce el usuario en la tabla mysql.user):

mysql> GRANT USAGE ON irontec_db.* TO irontec_user_nopriv@localhost IDENTIFIED BY 'irontec_pass';
Query OK, 0 rows affected (0.01 sec)

Usuarios con privilegios de solo lectura en registros:

mysql> GRANT SELECT ON irontec_db.* TO irontec_user_ro@localhost IDENTIFIED BY 'irontec_pass';
Query OK, 0 rows affected (0.02 sec)

Usuarios con priligegios de solo inserción o modificación de registros:

mysql> GRANT INSERT,UPDATE ON irontec_db.* TO irontec_user_wo@localhost IDENTIFIED BY 'irontec_pass';
Query OK, 0 rows affected (0.01 sec)

Selección de Usuarios

Ver el usuario con el que se está trabajando

mysql> SELECT user();
+------------------------+
| user()                 |
+------------------------+
| irontec_user@localhost |
+------------------------+
1 row IN SET (0.00 sec)

Visualización de Privilegios de Usuarios

mysql> SHOW grants FOR 'irontec_user_allpriv'@'localhost';
+------------------------------------------------------------------------------------------------+
| Grants FOR irontec_user_allpriv@localhost                                                      |
+------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'irontec_user_allpriv'@'localhost' IDENTIFIED BY PASSWORD '1a7f0760d48e' |
| GRANT ALL PRIVILEGES ON `irontec_db`.* TO 'irontec_user_allpriv'@'localhost'                   |
+------------------------------------------------------------------------------------------------+
2 rows IN SET (0.00 sec)

Eliminación de Usuarios

mysql> REVOKE ALL PRIVILEGES ON irontec_db.* FROM 'irontec_user_allpriv'@'localhost';
Query OK, 0 rows affected (0.00 sec)
 
mysql> SHOW grants FOR 'irontec_user_allpriv'@'localhost';
+------------------------------------------------------------------------------------------------+
| Grants FOR irontec_user_allpriv@localhost                                                      |
+------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'irontec_user_allpriv'@'localhost' IDENTIFIED BY PASSWORD '1a7f0760d48e' |
+------------------------------------------------------------------------------------------------+
1 row IN SET (0.00 sec)
 
mysql> REVOKE usage ON *.* FROM 'irontec_user_allpriv'@'localhost';
Query OK, 0 rows affected (0.00 sec)
 
mysql> DROP user 'irontec_user_allpriv'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Trabajando con Tablas

Tipos de Tablas y Motores de Almacenamiento

Tipos de Campos

Creación Tablas

MyISAM

mysql> CREATE TABLE clientes (
  -> id_cliente INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  -> razon_social VARCHAR (50) NOT NULL,
  -> domicilio VARCHAR (100) NOT NULL,
  -> nif VARCHAR (9) NOT NULL,
  -> contacto VARCHAR (40)
  -> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.05 sec)
  
mysql> CREATE TABLE presupuestos (
  -> id_presupuesto INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  -> empresa INT(8) NOT NULL,
  -> asunto VARCHAR (60),
  -> precio FLOAT DEFAULT 0.0,
  -> fecha DATE,
  -> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.20 sec)

InnoDB

mysql> CREATE TABLE clientes (
  -> id_cliente INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  -> razon_social VARCHAR (50) NOT NULL,
  -> domicilio VARCHAR (100) NOT NULL,
  -> nif VARCHAR(9) NOT NULL,
  -> contacto VARCHAR(40)
  -> ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.10 sec)
  
mysql> CREATE TABLE presupuestos (
  -> id_presupuesto INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  -> empresa INT(8) NOT NULL,
  -> asunto VARCHAR (60),
  -> precio FLOAT DEFAULT 0.0,
  -> fecha DATE,
  -> INDEX (empresa),
  -> FOREIGN KEY (empresa) REFERENCES clientes(id_cliente) ON DELETE CASCADE ON UPDATE CASCADE
  -> ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.06 sec)

Visualización Tablas

Tablas contenidas en una Base de Datos:

mysql> SHOW TABLES;
+------------------+
| Tables_in_prueba |
+------------------+
| clientes         |
| presupuestos     |
+------------------+
2 rows IN SET (0.00 sec)

Estructura de una tabla:

mysql> DESC presupuestos;
+----------------+-------------+------+-----+---------+----------------+
| FIELD          | Type        | NULL | KEY | DEFAULT | Extra          |
+----------------+-------------+------+-----+---------+----------------+
| id_presupuesto | int(8)      |      | PRI | NULL    | AUTO_INCREMENT |
| empresa        | varchar(50) |      |     |         |                |
| asunto         | varchar(60) | YES  |     | NULL    |                |
| precio         | float       | YES  |     | 0       |                |
| fecha          | date        | YES  |     | NULL    |                |
+----------------+-------------+------+-----+---------+----------------+
5 rows IN SET (0.01 sec)

Modificación Tablas

Añadir un nuevo campo

mysql> ALTER TABLE [database.]tabla ADD campo_nuevo tipo AFTER campo_viejo;

mysql> ALTER TABLE presupuestos ADD adjunto BLOB AFTER fecha ;
Query OK, 0 rows affected (0.06 sec)
Registros: 0  Duplicados: 0  Peligros: 0

Cambiar el nombre de una tabla

mysql> ALTER TABLE [database.]tabla RENAME tabla_nueva;

mysql> ALTER TABLE presupuestos RENAME proyectos;
Query OK, 0 rows affected (0.03 sec)

Cambiar el tipo de dato de un campo

mysql> ALTER TABLE [database.]tabla CHANGE campo campo nuevo_tipo;

mysql> ALTER TABLE presupuestos CHANGE asunto asunto VARCHAR(100);
Query OK, 0 rows affected (0.23 sec)
Registros: 0  Duplicados: 0  Peligros: 0

Eliminar un campo existente

mysql> ALTER TABLE [database.]tabla DROP campo;

mysql> ALTER TABLE presupuestos DROP adjunto;
Query OK, 0 rows affected (0.05 sec)
Registros: 0  Duplicados: 0  Peligros: 0

Eliminación Tablas

mysql> DROP TABLE [database.]tabla;

mysql> DROP TABLE presupuestos;
Query OK, 0 rows affected (0.44 sec)

Trabajando con Registros

Nota: Si no se indica la Base de Datos a la que una tabla hace referencia, es necesario seleccionar previamente dicha BBDD (use database).

Consultas

mysql> SELECT campo1,campo2,.. FROM [database.]tabla;

mysql> SELECT * FROM proyectos;
Empty SET (0.10 sec)
 

Inserción de datos

mysql> INSERT INTO [database.]tabla (campo1,campo2,..) VALUES (’valor_campo1’,’valor_campo2’,..);

mysql> INSERT INTO presupuestos (empresa,asunto,precio,fecha) VALUES ('UPV','Formación GNU/Linux','600','2005-07-01');
Query OK, 1 row affected (0.00 sec)

Modificación de datos

mysql> UPDATE [database.]tabla SET campo1=’valor_nuevo_campo1’,campo2=’valor_nuevo_campo2’ WHERE condición;

mysql> UPDATE presupuestos SET empresa='UPV/EHU' WHERE empresa='UPV';

Eliminación de datos

mysql> DELETE FROM [database.]tabla WHERE condición;

mysql> DELETE FROM presupuestos WHERE id='1';
Query OK, 1 row affected (0.04 sec)

Trabajando con MySQL

Variables de Sistema

Ver variables de sistema:

mysql> SHOW VARIABLES;
+---------------------------------+----------------------------------------------------------+
| Variable_name                   | Value                                                    |
+---------------------------------+----------------------------------------------------------+
| back_log                        | 50                                                       |
| basedir                         | /usr/                                                    |
| bdb_cache_size                  | 8388600                                                  |
| bdb_home                        | /var/lib/mysql/                                          |
| bdb_log_buffer_size             | 32768                                                    |
| bdb_logdir                      |                                                          |
| bdb_max_lock                    | 10000                                                    |
| bdb_shared_data                 | OFF                                                      |
| bdb_tmpdir                      | /tmp/                                                    |
| binlog_cache_size               | 32768                                                    |
..............................................................................................
| version                         | 4.1.11-Debian_4-log                                      |
| version_bdb                     | Sleepycat Software: Berkeley DB 4.1.24: (April  1, 2005) |
| version_comment                 | Source distribution                                      |
| version_compile_machine         | i386                                                     |
| version_compile_os              | pc-linux-gnu                                             |
| wait_timeout                    | 28800                                                    |
+---------------------------------+----------------------------------------------------------+
196 rows IN SET (0.01 sec)
 

Configuración

/etc/mysql/my.cnf

Tablas InnoDB por defecto

[mysqld]
default-table-type=innodb

Localización

[mysqld]
language  = /usr/share/mysql/spanish

Soporte SSL

Backups

mysqldump

Programa incluído en el paquete mysql-client

Referencia manual MySQL

Backup de todas las bases de datos:

$ mysqldump --opt --all-databases -u root -p > backup_irontec_mysql.sql
$ mysqldump --opt --all-databases -u root --password=contraseña > backup_irontec_mysql.sql

Otras Herramientas

mysqladmin

Para cambiar la contraseña del usuario root:

$ mysqladmin -u root password IRONPASSWORD
 
wiki/mysql.txt · Última modificación: 2006/11/15 20:19 por aktor
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki