Comandos MYSQL
Comandos MYSQL
Comandos MYSQL
-- instalar mysql
rpm -ivh mysql*
rpm -ivh mysql-common
rpm -ivh mysql-libs
rpm -ivh mysql-client
rpm -ivh mysql-server
-- levantar servicio
systemctl start mysqld
systemctl enable mysqld.service
-- version MYSQL
mysql -V
-- levantar servicio
service mysqld start
systemctl start mysqld
systemctl enable mysqld.service
/etc/init.d/mysqld restart
-- comandos mysql
--conectarse
mysql -h localhost -u root -p
-- ruta de instalacion
select @@datadir;
-- version
mysql -V
SELECT VERSION(), CURRENT_DATE;
SHOW VARIABLES LIKE "%version%";
getenforce
# Concerning my datadir is in /mysql/mysql
semanage fcontext -a -t mysqld_db_t "/mysql/mysql(/.*)?"
restorecon -Rv /mysql/mysql
restorecon reset /mysql/mysql context unconfined_u:object_r:default_t:s0-
>unconfined_u:object_r:mysqld_db_t:s0
--editar /etc/selinux/config
disable selinx
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- eliminar BD
drop database prueba;
-- configuracion BD
/etc/mysqldump.cnf
/etc/mysql/my.cnf
-- variables
show variables;
show status;
-- alter users
ALTER USER
'jeffrey'@'localhost' IDENTIFIED BY 'new_password',
'jeanne'@'localhost'
REQUIRE SSL WITH MAX_USER_CONNECTIONS 2;
-- usuarios en la BD
-- L�mite de conexiones
-- listar usuarios
select User from mysql.user;
select u.User,Db from mysql.user u,mysql.db d where u.User=d.User;
-- una muy b�sica aproximaci�n a la cantidad de memoria RAM requerida para sistemas
transaccionales con la siguiente f�rmula: (SISTEMA OPERATIVO + 32 MB + BUFFERS +
POOLS + CACHES + (CONEXIONES * 1 MB)) * 1,2. Tomando un margen de seguridad del
20%.
-- revocar permisos
REVOKE [permiso] ON [nombre de base de datos].[nombre de tabla] FROM �[nombre de
usuario]�@�localhost�;
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
-- Algunas variables de las estado del servidor MySQL que ser�a importante tener en
cuenta son las siguientes:
-- CREAR OBJETOS
-- tabla
-- ver objetos
SHOW TABLES;
SHOW COLUMNS FROM nombre_de_tabla;;
-- Valores nulos
CREATE TABLE ciudad1 (nombre CHAR(20) NOT NULL, poblacion INT NULL);
-- Claves primarias
-- si queremos crear un �ndice en la columna nombre de la tabla de ciudades,
crearemos la tabla as�:
CREATE TABLE ciudad3 (nombre CHAR(20) NOT NULL PRIMARY KEY, poblacion INT NULL
DEFAULT 5000);
-- columna autoincremental
crear una columna autoincrementada, aunque esta columna s�lo puede ser de tipo
entero. combinaci�n de clave primaria, que sea entera y autoincrementada es ideal
para usarla como clave primaria artificial
CREATE TABLE ciudad5 (clave INT AUTO_INCREMENT PRIMARY KEY, nombre CHAR(20) NOT
NULL, poblacion INT NULL DEFAULT 5000);
-- Comentarios
al crear la tabla, podemos a�adir un comentario a cada columna. Este comentario
sirve como informaci�n adicional sobre alguna caracter�stica especial de la
columna, y entra en el apartado de documentaci�n de la base de datos
--- definici�n_columnas
| [CONSTRAINT [s�mbolo]] PRIMARY KEY (index_nombre_col,...)
| KEY [nombre_index] (nombre_col_index,...)
| INDEX [nombre_index] (nombre_col_index,...)
| [CONSTRAINT [s�mbolo]] UNIQUE [INDEX]
[nombre_index] [tipo_index] (nombre_col_index,...)
| [FULLTEXT|SPATIAL] [INDEX] [nombre_index] (nombre_col_index,...)
| [CONSTRAINT [s�mbolo]] FOREIGN KEY
[nombre_index] (nombre_col_index,...) [definici�n_referencia]
| CHECK (expr)
-- primary key
CREATE TABLE ciudad4 (nombre CHAR(20) NOT NULL, poblacion INT NULL DEFAULT 5000,
PRIMARY KEY (nombre));
CREATE TABLE mitabla1 (id1 CHAR(2) NOT NULL, id2 CHAR(2) NOT NULL, texto CHAR(30),
PRIMARY KEY (id1, id2));
-- �ndices
Para definir estos �ndices se usan indistintamente las opciones KEY o INDEX.
-- indice sobre parte de una columna, ejemplo usar� s�lo los cuatro primeros
caracteres de la columna 'nombre' para crear el �ndice
-- Claves �nicas
El tercero permite definir �ndices con claves �nicas, tambi�n sobre una columna,
sobre varias o sobre partes de columnas. Para definir �ndices con claves �nicas se
usa la opci�n UNIQUE.
La diferencia entre un �ndice �nico y uno normal es que en los �nicos no se permite
la inserci�n de filas con claves repetidas. La excepci�n es el valor NULL, que s�
se puede repetir.
-- Los �ndices sirven para optimizar las consultas y las b�squedas de datos.
Mediante su uso es mucho m�s r�pido localizar filas con determinados valores de
columnas, o seguir un determinado orden
-- Claves for�neas
CREATE TABLE nombre
definici�n_de_columnas
[CONSTRAINT [s�mbolo]] FOREIGN KEY [nombre_index] (nombre_col_index,...)
[REFERENCES nombre_tabla [(nombre_col,...)]
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT]
[ON UPDATE RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT]]
CREATE TABLE telefonos2 ( numero CHAR(12),id INT NOT NULL, KEY (id), FOREIGN KEY
(id) REFERENCES personas2 (id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
Existen cinco opciones diferentes. Veamos lo que hace cada una de ellas:
RESTRICT: esta opci�n impide eliminar o modificar filas en la tabla referenciada si
existen filas con el mismo valor de clave for�nea.
CASCADE: borrar o modificar una clave en una fila en la tabla referenciada con un
valor determinado de clave, implica borrar las filas con el mismo valor de clave
for�nea o modificar los valores de esas claves for�neas.
SET NULL: borrar o modificar una clave en una fila en la tabla referenciada con un
valor determinado de clave, implica asignar el valor NULL a las claves for�neas con
el mismo valor.
NO ACTION: las claves for�neas no se modifican, ni se eliminan filas en la tabla
que las contiene.
SET DEFAULT: borrar o modificar una clave en una fila en la tabla referenciada con
un valor determinado implica asignar el valor por defecto a las claves for�neas con
el mismo valor.
-- Motor de almacenamiento
Podemos usar indistintamente ENGINE o TYPE, pero la forma recomendada es ENGINE ya
que la otra desaparecer� en la versi�n 5 de MySQL.
Hay seis motores de almacenamiento disponibles. Algunos de ellos ser�n de uso
obligatorio si queremos tener ciertas opciones disponibles. Por ejemplo, ya hemos
comentado que el soporte para claves for�neas s�lo est� disponible para el motor
InnoDB. Los motores son:
BerkeleyDB o BDB: tablas de transacci�n segura con bloqueo de p�gina.
HEAP o MEMORY: tablas almacenadas en memoria.
ISAM: motor original de MySQL.
InnoDB: tablas de transacci�n segura con bloqueo de fila y claves for�neas.
MERGE o MRG_MyISAM: una colecci�n de tablas MyISAM usadas como una �nica tabla.
MyISAM: el nuevo motor binario de almacenamiento portable que reemplaza a ISAM.
Generalmente usaremos tablas MyISAM o tablas InnoDB.
A veces, cuando se requiera una gran optimizaci�n, creemos tablas temporales en
memoria.
-- ver la instrucci�n usada para crear una tabla, Usando '\G' en lugar de ';' la
salida se muestra en forma de listado
show create table gente\G
-- Reemplazar filas
REPLACE, que es una alternativa para INSERT, que s�lo se diferencia en que si
existe alg�n registro anterior con el mismo valor para una clave primaria o �nica,
se elimina el viejo y se inserta el nuevo en su lugar.
-- Eliminar filas
TRUNCATE ciudad5;
SELECT nombre, fecha, DATEDIFF(CURRENT_DATE(),fecha)/365 FROM gente;
SELECT nombre, fecha, DATEDIFF(CURRENT_DATE(),fecha)/365 AS edad FROM gente;
SELECT 2+3 "2+2";
-- agrupar filas
group by
-- having
permite hacer selecciones en situaciones en las que no es posible usar WHERE
--
-- create database testdb;
create user 'testuser'@'localhost' identified by 'testinG,12345';
grant all on testdb.* to 'testuser' identified by 'testinG,12345';
-- Tune MySQL
-- Download MySQL Tuner to your home directory.
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
-- To run it:
perl ./mysqltuner.pl
You will be asked for the MySQL root user�s name and password. The output will show
two areas of interest: General recommendations and Variables to adjust
Column count of mysql.user is wrong. Expected 42, found 44. The table is probably
corrupted
-- opcion 2
mysql -u root -p
use mysql;
alter table mysql.user drop column default_role;
alter table mysql.user drop column max_statement_time;
alter table mysql.user drop column password_expired;
quit;