Tutorial Mysql - Usando mysql

3 - Usando mysql

[editar]
Tutorial creado por Alvaro Marín Illera alvaro at rigel.deusto.es. Extraido de: http://www.mononeurona.org/index.php?idp=521
27 de Octubre de 2005
Junto con el servidor de base de datos, MySQL nos proporciona otras herramientas, como el cliente mysql que utilizaremos para conectarnos al servidor a partir de ahora. Ejecutando

$mysql -hvemos todas las opciones de este programa, entre las más importantes
h => host donde está el servidor (por defecto localhost)
u => usuario
p => password
P => puerto
Para conectarnos en un principio, basta con ejecutar en la shell: $mysql -u root -p
Por defecto deja al usuario root SIN contraseña, lo cambiaremos luego.
Entramos en MySQL entonces: $mysql -u root -p
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 3.23.49-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
MySQL tiene "auto completado" de comandos, como el bash. Así que podemos dar al [Tab] para ver todas los posibles comandos a ejecutar. Para empezar vamos a ver qué bases de datos tenemos ya creadas por defecto: mysql>show databases;
La BD mysql es la principal del servidor. Para poder usarla y hacer consultas sobre ella, debemos indicar a MySQL que queremos trabajar con dicha BD: mysql>use mysql;
Database changed
A partir de ahora, todas las sentencias SQL que hagamos van a ser sobre las tablas de esta base de datos. Si en un momento dado, queremos ver con cuál estamos trabajando, lo podemos hacer con: mysql> select database();
+
+
| database() |
+
+
| mysql |
+
+
1 row in set (0.00 sec)
También podemos hacerlo para recordar el usuario con el que estabamos: mysql>select user();
Para ver las tablas de las que está formada, lo hacemos con: mysql>show tables;
+
+
| Tables_in_mysql |
+
+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+
+
6 rows in set (0.00 sec)
La tabla tables_priv, correponde a los permisos de los usuarios a nivel de tablas, es decir, en qué tablas puede hacer consultas cada usuario.
La tabla columns_priv, corresponde con los permisos a nivel de columna Nos interesan las tablas de db y user. En la primera, se encuentran los permisos que tienen cada usuario en una determinada BD y el user están los usuarios del sistema. mysql>SELECT * FROM user;
muestra todos los usuarios de MySQL, el host desde el que está permitido que se conecte, la contraseña y si tiene o no privilegios para hacer selects, inserts... sobre esta tabla y apagar/reiniciar...el servidor. Vamos a añadir un usuario nuevo: mysql>insert into user (Host,User,Password) values("localhost","ghost",password('ghost'));

En la tabla db, tenemos los permisos que tiene cada usuario para una determinada base de datos, si puede hacer selects, inserts... deberíamos hacer una nueva insert en esta tabla... todo esto puede ser bastante "pesado" por lo que se creó una herramienta para manejar más fácilmente todo esto, el comando GRANT.
Vamos a repetir lo anterior pero con este nuevo comando. Antes borramos el usuario creado con:

mysql>DELETE FROM user WHERE User="ghost" and Host="localhost";
y lo creamos usando GRANT: GRANT privileges(columns) ON what TO user IDENTIFIED BY "password" [WITH GRANT OPTION];
Con esto, se crea una nueva entrada en la tabla mysql.user y mysql.db. La contraseña es cifrada con la función vista antes (password()).
Vamos a crear una BD llamada BD y le damos permisos al nuevo usuario en ella: mysql>create database BDghost;
mysql>GRANT ALL ON BDghost.* TO ghost@localhost IDENTIFIED BY "ghost";
Donde los privilegios pueden ser ALTER,CREATE,DELETE,DROP...ALL,USAGE(se crea el user pero sin privilegios).
La opcion WITH GRANT OPTION, permite que el usuario de permisos a otros.
El user, puede ser de la forma user@hostname. Si no se especifica la máquina desde la que el usuario se conectará, se le permitirá desde cualquier sitio, por lo que aparecerá un '%' en la columna Host de la tabla.
Vemos el usuario creado con; mysql>select * from user;
y sus privilegios en la base de datos que crearemos: mysql>select * from db;
Para eliminar privilegios, tenemos REVOKE: mysql>REVOKE privileges(columns) ON what FROM user;


Por ejemplo, si queremos negar al usuario 'ghost' la posibilidad de borrar las tablas de la base de datos, lo haríamos de la siguiente forma:

mysql> REVOKE DROP ON BDghost.* FROM ghost@localhost;


Pero esto no elimina los usuarios completamente del sistema, solo le quita los privilegios. Para eliminarlo completamente deberemos ir a la tabla user de la base de datos mysql y borrarlo "a mano" con un sentencia delete, como hemos visto antes.

Como hemos dicho, en un principio, MySQL deja la cuenta root sin contraseña, por lo que habrá que cambiarlo inmediatamente, para ello: Diferentes formas:

mysql> SET PASSWORD FOR root@localhost=password('nuevapass');
o cambiando directamente en la tabla user: $mysql -u root mysql -p
mysql> UPDATE user SET Password=password('nuevapass') WHERE user='root';
mysql> FLUSH PRIVILEGES;
Salimos con exit; Ahora vamos a conectarnos con el usuario que acabamos de crear, para ello lo podemos hacer con $mysql -u ghost -p (habría que poner -h hostname si estamos en otra máquina)
pero resulta muy util crearse un .my.cnf (nótese el '.' para ocultar el archivo) en nuestro home, con las siguientes opciones: [client]
host=localhost
user=ghost
password=ghost
Lógicamente, este archivo deberá tener solamente permisos de lectura para el usuario para ello, hacemos: $chmod 600 .my.cnf
En el caso de que accederíamos todo el rato a una base de datos, podríamos poner tambien: database=BDghost
De esta forma, para conectarnos a mysql, ahora nos basta con poner mysql sin parámetro alguno desde la shell y se nos conectara con los parámetros dados en .my.cnf
[editar]

6 opiniones

Opinion.

Realmente este curso es muy basico, salvo, que algunos no estan muy metidos en el asunto de mysql asi que seria un poquito mejor que explicara bien bien, a que se refiere casa comando apesar de eso esto esta muy bien.
Mysql.

Hola a todos... Soy de paraná entre rios. Mi nombre es martin y estudio ing en sist en oro verde. Saludos y disfruten de este curso. Por consultas envien email a hormis25@hotmail. Com.
Tutorial mysql.

Me parece que es buen curso ya que cuenta con lo basico y es de manera facil de usar el mysql, gracias por hacerlo puesto ya ke me fue de gran ayuda para mi proyecto de residencias.
Técnico en informática.

Excelente curso básico de introducción a mysql, hacía falta un buen curso introductorio y en español de esta poderosa base de datos.
Curso de mysql.

Excelente nada mas que decir.
1 2 | siguiente >

Tutoriales relacionados con 'Tutorial Mysql'

Su principal objetivo de diseño fue la velocidad, por ello se suprimieron algunas características de... Más »
Los compañeros de Nodo50 comparten con nosotros este mini-tutorial que nos muestra como conectar con... Más »
En este artículo explicamos paso a paso como realizar una instalación a partir de los... Más »
Entiendase que AJAX no se refiere a usar el objeto XMLHttpRequest de manera indispensable porque... Más »
Los compañeros de Nodo50 comparten con nosotros este mini-tutorial que nos muestra como conectar con... Más »

Autor y licencia de 'Tutorial Mysql'


Tutorial de Alvaro Marín Illera alvaro at rigel.deusto.es. Extraido de: http://www.mononeurona.org/index.php?idp=521 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.