# apt-get install mysql-server
# apt-get install mysql-server-4.1
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>
mysql> CREATE DATABASE irontec_db; Query OK, 1 row affected (0.03 sec)
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)
mysql> DROP DATABASE irontec_db; Query OK, 0 rows affected (0.60 sec)
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)
Ver el usuario con el que se está trabajando
mysql> SELECT user(); +------------------------+ | user() | +------------------------+ | irontec_user@localhost | +------------------------+ 1 row IN SET (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' | | GRANT ALL PRIVILEGES ON `irontec_db`.* TO 'irontec_user_allpriv'@'localhost' | +------------------------------------------------------------------------------------------------+ 2 rows IN SET (0.00 sec)
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)
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)
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)
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)
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
mysql> ALTER TABLE [database.]tabla RENAME tabla_nueva;
mysql> ALTER TABLE presupuestos RENAME proyectos; Query OK, 0 rows affected (0.03 sec)
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
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
mysql> DROP TABLE [database.]tabla;
mysql> DROP TABLE presupuestos; Query OK, 0 rows affected (0.44 sec)
Nota: Si no se indica la Base de Datos a la que una tabla hace referencia, es necesario seleccionar previamente dicha BBDD (use database).
mysql> SELECT campo1,campo2,.. FROM [database.]tabla;
mysql> SELECT * FROM proyectos; Empty SET (0.10 sec)
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)
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';
mysql> DELETE FROM [database.]tabla WHERE condición;
mysql> DELETE FROM presupuestos WHERE id='1'; Query OK, 1 row affected (0.04 sec)
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)
/etc/mysql/my.cnf
[mysqld] default-table-type=innodb
[mysqld] language = /usr/share/mysql/spanish
Programa incluído en el paquete mysql-client
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
Para cambiar la contraseña del usuario root:
$ mysqladmin -u root password IRONPASSWORD