Conexión MySQL Client

mysql -u -h -P -p

Ejemplo de conexión utilizando usuario “root” desde la consola:

#$ 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 miBD_db;
Query OK, 1 row affected (0.03 sec)

Selección de BD

Cambiar o elegir base de datos a utilizar:

mysql> USE miBD_db;
DATABASE changed

Ver la base de datos seleccionada:

mysql> SELECT DATABASE();
+————+
| DATABASE() |
+————+
| miBD_db |
+————+
1 row IN SET (0.00 sec)

Eliminación de BD

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

Trabajando con Usuarios / Privilegios
Creación de Usuarios

Usuarios

Ejm: Otorgar todos los privilegios a

mysql> GRANT ALL PRIVILEGES ON miBD.* TO miBD_user_allpriv@localhost IDENTIFIED BY 'miBD_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 miBD_db.* TO miBD_user_nopriv@localhost IDENTIFIED BY 'miBD_pass';
Query OK, 0 rows affected (0.01 sec)

Usuarios con privilegios de solo lectura en registros:

mysql> GRANT SELECT ON miBD.* TO user_bd@localhost IDENTIFIED BY 'miBD_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 miBD_db.* TO miBD_user_wo@localhost IDENTIFIED BY 'miBD_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() |
+————————+
| miBD_user@localhost |
+————————+
1 row IN SET (0.00 sec)

Visualización de Privilegios de Usuarios

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

Eliminación de Usuarios

mysql> REVOKE ALL PRIVILEGES ON miBD.* FROM 'miBD_user_allpriv'@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW grants FOR 'miBD_user_allpriv'@'localhost';
+————————————————————————————————+
| Grants FOR miBD_user_allpriv@localhost |
+————————————————————————————————+
| GRANT USAGE ON *.* TO ‘miBD_user_allpriv’@’localhost’ IDENTIFIED BY PASSWORD ‘1a7f0760d48e’ |
+————————————————————————————————+
1 row IN SET (0.00 sec)

mysql> REVOKE usage ON *.* FROM 'miBD_user_allpriv'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> DROP user 'miBD_user_allpriv'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Trabajando con Tablas – Tipos de Tablas y Motores de Almacenamiento
Referencia manual MySQL
Tipos de Campos

Referencia manual MySQL
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

Referencia manual MySQL
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

Backups – Respaldo, usar comando “mysqldump”

mysqldump 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_mysql.sql

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

Comando -d, hace backup solamente de la estructura de las tablas
$ mysqldump –opt –all-databases -d -u root –password=contraseña > backup_mysql.sql

Otras Herramientas
mysqladmin

Para cambiar la contraseña del usuario root:

$ mysqladmin -u root password mipass

Referencias:

www.mysql.com
airontec wiki:mysql