comandos mysql

17
About NomikOS – BLOG. CONTACTO – Escríbeme!. Proyectos y Trabajos. Indice de artículos Home Linux && PHP @ NomikOS – BLOG Artículos y temas sobre programación web: Linux, PHP, jQuery, CodeIgniter/Kohana y mis trabajos en linea en RAC. Igor Parra Bastias – NomikOS May 29 2009 Uso de la linea de comando para MySQL. Escrito por NomikOS el 29/May/2009 | 15 visitas photo credit: dmuth Esto es un tutorial introductorio (bastante bueno me permito decir). Si quieres una excelente lista de consulta rápida de comandos http://www.pantz.org /software/mysql/mysqlcommands.html MySQL dispone de una interface/shell llamada mysql. Con ella podrás interactuar en forma rápida con tus bases de datos, especialmente si accades a un servidor remoto, como es el caso de servidores web. Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d... 1 de 17 07/06/10 07:26

Upload: n439u1

Post on 20-Nov-2014

309 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Comandos Mysql

About NomikOS – BLOG.CONTACTO – Escríbeme!.Proyectos y Trabajos.Indice de artículosHome

Linux && PHP @ NomikOS – BLOG

Artículos y temas sobre programación web:Linux, PHP, jQuery, CodeIgniter/Kohana y mistrabajos en linea en RAC. Igor Parra Bastias –NomikOS

May

292009

Uso de la linea de comando para MySQL.Escrito por NomikOS el 29/May/2009 | 15 visitas

photo credit: dmuth

Esto es un tutorial introductorio (bastante bueno me permito decir). Si quieresuna excelente lista de consulta rápida de comandos http://www.pantz.org/software/mysql/mysqlcommands.html

MySQL dispone de una interface/shell llamada mysql. Con ella podrásinteractuar en forma rápida con tus bases de datos, especialmente si accades aun servidor remoto, como es el caso de servidores web.

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

1 de 17 07/06/10 07:26

Page 2: Comandos Mysql

Tiene capacidades readline lo que fundamentalmente te permite recorrer elhistorial de entradas/comandos usando las teclas de cursor (arriba y abajo) yautocompletación usando [TAB].

En adelante suponemos:

fanquito: nombre de usuario.mibd: nombre de una base de datos.mipassword: tu password de acceso a MySQL (Esta password no esnecesariamente la misma de la de tu cuenta de usuario).Las mayúsculas no son obligatorias aunque son muy usadas para mayorclaridad como ya verás.

Acceso a la linea de comando

Simplemente escribe mysql.

12345678

$ mysql [ENTER]Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 22Server version: 5.0.75-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Asi es, tu prompt es ahora mysql>. Y como muy amigablemente te recibe escon un: Tipée help si necesita ayuda.

Super valiosa ayuda para usar lalinea de comando

Simplemente escribe help.

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

2 de 17 07/06/10 07:26

Page 3: Comandos Mysql

12345678910111213141516171819

mysql> help

For information about MySQL products and services, visit: http://www.mysql.com/For developer information, including the MySQL Reference Manual, visit: http://dev.mysql.com/To buy MySQL Network Support, training, or other products, visit: https://shop.mysql.com/

List of all MySQL commands:Note that all text commands must be first on line and end with ';'? (\?) Synonym for 'help'.clear (\c) Clear command.connect (\r) Reconnect to the server. Optional arguments are db/host.... (varios comandos) ...

For server side help, type 'help contents'

mysql>

De aquí aprendemos 2 cosas muy importantes:

Para ejecutar un comando debes terminar su enunciado con un punto y coma(;) y [ENTER]. Puedes escribir en varias lineas. El shell te responderá en cadanueva linea con el símbolo (->) que significa que aún espera el punto y coma.Y lejos, lo mejor: Te dice que si de verdad quieres ayuda tipées help contents.

Simplemente escribe help contents.

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

3 de 17 07/06/10 07:26

Page 4: Comandos Mysql

1234567891011121314151617181920212223242526272829303132333435363738394041424344

# ayuda en generalmysql> help contentsYou asked for help about help category: "Contents"For more information, type 'help <item>', where <item> is one of thefollowing categories: Account Management Administration Data Definition Data Manipulation Data Types Functions Functions and Modifiers for Use with GROUP BY Geographic Features Language Structure Storage Engines Stored Routines Table Maintenance Transactions Triggers

# ayuda sobre comandos de adminstraciónmysql> help administrationYou asked for help about help category: "Administration"For more information, type 'help <item>', where <item> is one of thefollowing topics: DESCRIBE FLUSH QUERY CACHE HELP COMMAND HELP STATEMENT

# ayuda sobre comando DESCRIBEmysql> help describeName: 'DESCRIBE'Description:Syntax:{DESCRIBE | DESC} tbl_name [col_name | wild]

DESCRIBE provides information about the columns in a table. It is ashortcut for SHOW COLUMNS FROM. As of MySQL 5.0.1, these statementsalso display information for views. (See [HELP SHOW COLUMNS].)

URL: http://dev.mysql.com/doc/refman/5.0/en/describe.html

mysql>

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

4 de 17 07/06/10 07:26

Page 5: Comandos Mysql

Creación de una cuenta de usuariopara MySQL

MySQL tiene un subconjunto propio de usuarios y estos deben ser creadosexplícitamente.

1234

# sólo en MySQL 5.0.2+# para versiones anteriores usa GRANTCREATE USER fanquito IDENTIFIED BY 'mipassword';Query OK, 0 rows affected (0.01 sec)

Esto crea una cuenta identificada como fanquito (aqui cuenta y usuario sonsinónimos) en localhost, que es el host donde te encuentras ahora mismo, y eslo que la mayor parte de las veces necesitarás. Este nuevo usuario no tieneningún privilegio, estos se asignan con GRANT. Luego este comando “CREATEUSER” puedes servirte para crear una lista de usuarios de los cuales aún nosabes que tareas van a realizar. La forma más realista de crear nuevos usuarioses con GRANT.

Creación de una cuenta de usuariopara MySQL con el comando GRANT

GRANT permite crear usuarios y asignarle privilegios al mismo tiempo.

A todo esto los privilegios determinan que operaciones puedes realizar en quebases de datos (y sus tablas). Por ejemplo:

SELECT: leer.INSERT: escribir.DELETE: borrar.UPDATE: actualizar.

Veamos:

12345

# crear el usuario "fanquito2" con password "mipassword"# que pueda leer y reescribir registros en todas las tablas de midbmysql> GRANT SELECT, UPDATE, DELETE ON midb.* TO fanquito2 IDENTIF-> by 'mipassword';Query OK, 0 rows affected (0.01 sec)

Si el usuario ya existe sólo asigna/reasigna los nuevos privilegios y en este caso

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

5 de 17 07/06/10 07:26

Page 6: Comandos Mysql

no es necesario agregar “IDENTIFIED by ‘mipassword’”.Mirando más de cerca el enunciado. “ON midb.*” determina donde seráefectivos los privilegios.

Usa:

*.* para todas las bases de datos.midb.mitabla para especificar sólo cierta tabla.

Si un usuario ha metido la pata, como por ejemplo, borrando todos losregistros de una tabla de acceso colectivo (shú) le puedes dar una buenapatada así:

1234

# revocar todos los privilegios en toda la base de datos# para el usuario fanquito2mysql> REVOKE * ON rac.* FROM fanquito2;Query OK, 0 rows affected (0.01 sec)

Si sólo quieres quitarle la posibilidad de seguir cambiando el estado de la basede datos:

1234567891011121314

# averiguar que privilegios tiene el manos de hachamysql> SHOW GRANTS FOR fanquito2;+----------------------------------------------------------------------+| Grants for fanquito2@% |+----------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'fanquito2'@'%' IDENTIFIED BY PASSWORD '*CE| GRANT SELECT, UPDATE, DELETE ON `midb`.* TO 'fanquito2'@'%' +----------------------------------------------------------------------+3 rows in set (0.00 sec)

# revocar privilegios de escritura# para el usuario fanquito2mysql> REVOKE UPDATE, DELETE ON rac.* FROM fanquito2;Query OK, 0 rows affected (0.00 sec)

Muy bien. Con eso debiera dejar de dar problemas el susodicho. Ahora si quesi se trataba de la tabla con los datos de lo me debes:

123

# borrar cuenta/usuario fanquito2mysql> DROP USER fanquito2;Query OK, 0 rows affected (0.01 sec)

Datos comunes en scripts PHP

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

6 de 17 07/06/10 07:26

Page 7: Comandos Mysql

referentes a bases de datos

El script necesita saber tus datos de usuario en la base de datos para poderacceder en tu nombre. Generalmente se definen en una manera parecida aesta:

12345678

define('DB_TYPE', 'mysql');define('DB_NAME', 'midb');# en el mismo servidordefine('DB_HOST', 'localhost');# en la base de datos sudb un servidor remotodefine('DB_HOST', 'sudb.servidorremoto.com');define('DB_USER', 'fanquito');define('DB_PASS', 'mipassword');

La palabra reservada “define” es propia de PHP y asigna contantes. Estas adiferencia de las variables son superglobales o sea pueden ser accedidas desdecualquier función/clase (y no pueden ser redefinidas posteriormente).

Importación y exportación de tablasy bases de datos

Para empezar (que ingenuo fuí), una ventaja insuperable y que yocomúnmente aprovecho, por sobre una interface web como phpmyadmin, es lavelocidad con que puedes importar y exportar tablas y bases de datos enteras.

1234567891011

# importar archivo sql# no importa la extension sql. sólo debe ser un archivo de texto# con instrucciones entendibles por MySQLmysql -uroot -pmipassword mibd < tubd.sql

# exportar base de datos entera a archivo sql# sabiamente agregamos .sql pero no es necesariomysqldump -u root -pmipassword mibd > midb.sql

# exportar sólo una tablamysqldump -uroot -p mibd mitabla> mitabla.sql

Fíjate que en el ultimo comando no escribimos la password, sólo “-p”. Esto esmuy bueno si quieres mantener oculta tu password, tanto de ojos sobre tuhombro (como cuando aparecen sólo asteriscos en una página web) como de

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

7 de 17 07/06/10 07:26

Page 8: Comandos Mysql

los logs del servidor.

123

# usando la opción -p podrás ingresar tu password en una manera segura$ mysqldump -uroot -p mibd mitabla> mitabla.sqlEnter password:

Personalmente creo que en un ambiente distendido de trabajo como porejemplo, el manejo normal de tu blog, es lícito escribir tu password en la lineade comando para posteriormente usar history y ejecutar comandosrápidamente. Depende de tí.

Comandos muy usados paraconsultar tus tablas

Vuelvo a decir que esta es la manera ideal de trabajar si quieres terminarantes de las 5 de la tarde para alcanzar a tomarte una cerveza antes de quellegue la noche.

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

8 de 17 07/06/10 07:26

Page 9: Comandos Mysql

123456789101112131415161718192021222324252627282930313233343536373839404142434445

# mostrar todas las bases de datosmysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || mibd |+--------------------+4 rows in set (0.00 sec)

# trabajar con una en particularmysql> use mibd;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -A

Database changed

# mostrar sus tablasmysql> show tables;+---------------------------------------------+| Tables_in_rac |+---------------------------------------------+| data_control || data_record1 || data_record2 || data_source || data_status_autotrader_control || data_status_ebay_control || data_status_exchangeandmart_control || data_status_fish4_control |+---------------------------------------------+8 rows in set (0.00 sec)

# mostrar estructura de una tabla en particularmysql> describe data_control;+--------------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------------+-------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || shedule_on | tinyint(1) | NO | | 0 | || admin | varchar(20) | NO | | | || password | varchar(32) | NO | | | || data | tinyint(1) | NO | | 1 | |+--------------+-------------+------+-----+---------+----------------+

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

9 de 17 07/06/10 07:26

Page 10: Comandos Mysql

Definir password de root

Aclaremos que este root se refiere al usuario root del conjunto de usuarios deMySQL y no del sistema operativo. Son distintos. Cuando se instala MySQLviene el usuario root predefinido y sin password.

123456789

# definir una password para root# primero seleccionamos la bases de datos "mysql"# esta es parte de MySQL y siempre existemysql> USE mysql;

mysql> UPDATE user SET password=PASSWORD("mipassword") WHERE use

# recargar cache interno de MySQLmysql> FLUSH PRIVILEGES;

Recuperar password de root

Sin comentarios.Para esto debes ser root en el sistema operativo de tal manera que puedasreiniciar el demonio mysqld.

Te daré los pasos calcados. Haz lo mismo que yo nena.

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

10 de 17 07/06/10 07:26

Page 11: Comandos Mysql

12345678910111213141516171819202122232425262728293031323334353637383940

mysql> cabeza de pollo de nuevo olvidaste tu password >:(

# asumir privilegios de rootsu[ENTER]password:

# parar mysld$ service stop mysqldStopping the mysqld service

# iniciar mysqld sin cargar tabla de privilegios$ mysqld_safe --skip-grant-tables &Starting mysqld daemon with databases from /var/lib/mysql

$ mysql -urootERROR 2002 (HY000): Can't connect to local MySQL server throughsocket '/var/run/mysql/mysql.sock' (2)

# si, no es na' así# dijo clarito: Starting mysqld daemon with databases from /var/lib/mysql

$ cd /var/lib/mysql/$ mysql -urootWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.0.75-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

# reasignar password para rootmysql> UPDATE user SET password=PASSWORD("mipassword") WHERE usQuery OK, 3 rows affected (0.01 sec)Rows matched: 3 Changed: 3 Warnings: 0

# abandonar la linea de comandomysql> exit

# reiniciar mysqld[17:47:40 root@zenwalk]$ service restart mysqldRestarting the mysqld service

Muy bien, me he alargado bastante en esto que sólo iba a ser unaentrentención mañanera antes de trabajar de veras. Así que ponte con unoscomentarios tú también, vale, colega?

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

11 de 17 07/06/10 07:26

Page 12: Comandos Mysql

Rescatando posts terremoteados. | Linux && PHP @ NomikOS –BLOG:

[...] Uso de la linea de comando para MySQL. Escrito por NomikOSen Personal, June 3 – 2010 @ 11:10 hrs. | 2 visitas [...]

WordPress 2.9.2The Incutio XML-RPC PHP Library -- WordPress/2.9.2

Posts relacionados:

Uso de su y sudo para simular al usuario root.1.

Escrito por NomikOS en MySQL-DB, May 29 - 2009 @ 10:51 hrs. | 15 visitas

Post anteriorEncontrar URL de radios dentrode páginas web usando wget yless.

Post siguienteUso del administrador de archivos"midnight-commander" y "gnome-

commander" en linux – Tutorial.

1 comentario

Pingback | June 3, 2010 @ 11:20

RSS feed para comentarios en este post

TrackBack URL

Deja un comentario

Nombre (req.)

E-mail (req.)

Sitio web

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

12 de 17 07/06/10 07:26

Page 13: Comandos Mysql

XHTML: Etiquetas permitidas: <a href="" title=""> <abbr title=""> <acronym title=""> <b>

<blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike>

<strong>

Cuando este individuo no está programando para hacer de tumundo un lugar mejor, es que le estan obligado a beber y aotras peripecias similares.

Contrátame en:

Rent A Coder: How Software Gets Done

Proyectos en GitHub:

Usuario: NomikOSPúblico: Recover-admin-privileges-in-Wordpress* wp-get-admin.php - Un script PHP --no un plugin-- que crea un

usuario con privilegios de administrador en Wordpress

Páginas:

About NomikOS – BLOG.CONTACTO – Escríbeme!.Indice de artículosProyectos y Trabajos.

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

13 de 17 07/06/10 07:26

Page 14: Comandos Mysql

Posts Recientes:

* Campos extras en buddypress* Netbeans no tiene word wrap… What?* Sobreescribiendo archivos de sólo lectura en vi.* midnight-commander – login automático en FTP usando .netrc* Herramientas para programación web – Aardvark* Narración de Arthur Gordon Pym – Edgar Allan Poe (Podcast en 6capítulos)* midnight-commander – FTP/Secure FTP* Linux – Humor gráfico.* Rescatando posts terremoteados > lost+found.* Función PHP para obtener IP del cliente.

Más visitados hoy:

* Yum y repositorios centosplus y RPMforge/DAG en Centos.4 view(s) | posted on May 31, 2010* Codificación de caracteres: UTF-8 o ISO-8859-1.4 view(s) | posted on May 24, 2010* Actualizando php 5.2 en Centos 5.2 view(s) | posted on October 1, 2009* Uso de comando mail en linux.2 view(s) | posted on April 29, 2009* Listando directorios con tree (sin olvidar a midnight-commander) en la línea de comandos.1 view(s) | posted on May 25, 2010

Más visitados general:

Desde: 03/junio/2010

* Actualizando php 5.2 en Centos 5.28 view(s) | posted on October 1, 2009* Codificación de caracteres: UTF-8 o ISO-8859-1.22 view(s) | posted on May 24, 2010

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

14 de 17 07/06/10 07:26

Page 15: Comandos Mysql

* Yum y repositorios centosplus y RPMforge/DAG en Centos.22 view(s) | posted on May 31, 2010* Uso de comando mail en linux.13 view(s) | posted on April 29, 2009* Script para borrar una línea o sustituir texto en varios archivosusando sed.13 view(s) | posted on May 23, 2010

Categorias:

Ciencia Ficción (2)Computación (11)Firefox (4)Herramientas para programación web (2)jQuery y OOP Javascript (2)Linux (30)

Comandos (5)MySQL-DB (1)Personal (14)PHP (15)Tips y trucos cortos (3)Uncategorized (2)Wordpress/Buddypres (5)

Blogroll en Vivo!

El Blog de Enrique DansYo lo hago. ¿Tú lo haces?just recently by Enrique Dans

Just SherekanVim en tu Firefox con Vimperator234 days ago by Sherekan

Acerca de UbuntuProgramas para resolver mapas de Karnaugh y circuitoslógicos8 days ago by Sofía Vitale

UbuntronicsAmarok no reproduce nada15 hrs ago by Javier

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

15 de 17 07/06/10 07:26

Page 16: Comandos Mysql

Encuéntrame en:

Rent A Coder: How Software Gets Done

Webmaster World: News and Discussion for the Web Professional

SlackwareCL: Grupo Usuarios Slackware Linux Chile

Facebook: Red social que conecta amigos y familiares (y ex)

last.fm: A music service that learns what you love...

Software que uso:

LinuxGeany editor: A fast and lightweight IDE

GNOME Commander: A fast and powerful file manager for the

GNOME desktop

Kohana: Swift, Secure, and Small PHP 5 Framework

cURL: A command line tool for transferring files with URL syntax

Centos: The Community ENTerprise Operating System

Zenwalk linux: Ever tried zen computing?

MS-Windows ®Editplus+ editor: Internet-ready text editor

Total commander: Shareware file manager

PuTTY: A Free Telnet/SSH Client

Duke Nukem 3D: That's right baby. Take some ca$h y deja un buen

comentario antes de marcharte.

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

16 de 17 07/06/10 07:26

Page 17: Comandos Mysql

motor: WordPress. tema: TheBuckmaker modificado por NomikOS.

Uso de la linea de comando para MySQL. | Linu... http://nomikos.info/2009/05/29/uso-de-la-linea-d...

17 de 17 07/06/10 07:26