(Pequeña) Guía de Instalación de Mysql. Pedro Valenzuela S. A continuación se detalla los pasos para instalar Mysql en Windows y su uso en Java.
Paso 1. Bajar Mysql. Debemos bajar Mysql para Windows, es posible hacerlo en la siguiente dirección, http://dev.mysql.com/downloads/mysql/4.1.html El archivo que nos interesa es, Windows Essentials (x86) (suponiendo que se tiene una versión de 32 bits de Windows). Se encuentra bien abajo en la lista, pues la lista empieza con las versiones para Linux. Si no quieren responder las preguntas, hacen click en Seleccionan un mirror de la lista (hay mirrors chilenos) y bajan el archivo. Al menos yo tuve problemas con los links en mozilla firefox, así que tuve que ocupar internet explorer. De todas formas los links directos son, http://mysql.tecnoera.com/Downloads/MySQL-4.1/mysql-essential-4.1.14-win32.msi http://mysql.vision.cl/Downloads/MySQL-4.1/mysql-essential-4.1.14-win32.msi
Paso 2. Instalar Mysql. Para instalar, se debe abrir el archivo bajado en el paso anterior. Para el uso que se le dará a mysql (jugar con java :P), nos basta la opción "Typical",
Hacemos click en "next" y luego en "install". Aparecerá la una ventana. Si les sobra el tiempo se pueden registrar en mysql.com o si ya están registrados pueden poner sus datos. Para el resto de los flojos (incluído yo), En la siguiente Ventana eligen que desean configurar el servidor ahora.
Paso 3. Configurar Mysql. Si en el paso anterior seleccionaron que deseaban configurar el servidor, debería aparecer esta ventana. Click en "Next". Aparece esta ventana. Nuevamente para el uso que se le dará al servidor mysql y para no entrar en detalles (el que desee puede hacerlo) que no vienen al caso, se debe elegir "Standard Configuration". Click en "Next". Acá hay un punto importante. Se ofrece instalar el servidor como un servicio, esto es que se ejecute en segundo plano cada vez que Windows inicie. Claramente como no siempre estamos programando y queremos Mysql para hacer pruebas o tareas, se recomienda no seleccionar esta opción. Por otro lado, es conveniente seleccionar la opción "Include Bin Directory en Windows PATH", pues nos permitirá ejecutar la serie de programas de mysql desde cualquier directorio. Ahora click en "Next". A continuación click en "execute" y "finish".
Paso 4. Iniciando el Servidor. Para iniciar el servidor, en Windows, vamos a Inicio->Ejecutar escribimos cmd y hacemos click en aceptar. Aparece una ventana de comandos. Para iniciar el servidor mysql, escribimos mysqld-nt --defaults-file="C:\Archivos de Programa\MySQL\MySQL Server 4.1\my.ini" --console Donde C:\Archivos de Programa\MySQL\MySQL Server 4.1 es el directorio de instalación de mysql. Si la instalación fue exitosa, se debería ver lo siguiente, (la primera vez es así de largo. Cuando se ejecute por segunda vez, la salida debería ser sólo un par de líneas)
La última línea indica que el servidor mysql está corriendo y listo para aceptar conecciones. En vez de escribir el comando cada vez que queramos correr el servidor, podemos crear un batch file y correrlo cada vez que necesitemos iniciar el servidor. Es importante que sólo una instancia del servidor esté corriendo. Un batch file de ejemplo disponible aquí.
Paso 5. Usuarios y Bases de Datos Ahora debemos asegurar un poco el servidor (la verdad es que nadie espera que lo ataquen desde su propio computador, pero es para mostrar como funciona el sistema de usuarios de mysql), crear una nueva base de datos y asociarle un usuario. Asegurar un poco el servidor es ponerle una clave de acceso al usuario root. Este usuario es conocido como el superusuario y puede hacer lo que quiera con la base de datos. Si bien es poco probable que un ataque ocurra, es una buena costumbre cambiar o poner contraseñas distintas a las que vienen por defecto en los programas. Para hacer el cambio de la contraseña de root, el servidor debe estar corriendo. Abrimos una ventana de comandos y escribimos, mysql Entraremos al programa mysql, que nos permite ejecutar consultas en el servidor. Para cambiar la contraseña de un usario la sintaxis es, SET PASSWORD FOR 'usuario'@'host' = PASSWORD('nuevapassword'); Donde usuario es el nombre de usuario al cual queremos cambiar la password, host es la máquina desde la cual se conecta (por ejemplo: cipres.cec.uchile.cl), y nuevapassword la nueva contraseña del usuario. Como queremos cambiar la contraseña de acceso del superusuario root que se conecta desde la máquina local, localhost, escribimos, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('venganza'); Y le asignamos la password nueva 'venganza'. Ahora cada vez que queramos conectarnos por medio de mysql como superusuario, deberemos usar dicha contraseña. Escribimos exit y salimos de mysql. Ahora estamos fuera de mysql y necesitamos hacer dos cosas, crear una base de datos y asociarla a un nuevo usuario (usar root es mala idea). Necesitamos entrar a mysql pero esta vez usando la password que acabamos de poner. En una ventana de comandos, escribimos, mysql -u root -p Esta vez mysql nos pregunta la password. Ahora debemos crear una base de datos. La sintáxis para esto es bastante simple, CREATE DATABASE nombredelabasededatos; Así que crearemos la base de datos de nombre cc10a , escribimos, CREATE DATABASE cc10a; Ahora, como utilizar la base de datos con la cuenta de superusuario es mala idea, asociaremos la base de datos recién creada a un usuario nuevo. Llamaremos al nuevo usuario, condorito, y su contraseña será yayita. En mysql escribimos, GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP Con esto, el nuevo usuario puede realizar las operaciones más comunes en la base de datos cc10a, sin el riesgo de que acceda a otras bases de datos o dañe el servidor. Los ejemplos anteriores tienen un carácter ilustrativo y no pretenden profundizar en mysql, pero si se necesita información adicional, se puede obtener en, http://dev.mysql.com/doc/mysql/en/index.html
Paso 6. Java. Para poder acceder a nuestra nueva base de datos con java, necesitamos bajar el conector a la base de datos. Para esto, vamos a la siguiente dirección, http://dev.mysql.com/downloads/connector/j/3.1.html Luego escogemos un mirror y bajamos el archivo. Descomprimimos el archivo recién bajado y buscamos el jar, mysql-connector-java-3.1.10-bin.jar. En este archivo se encuentran las classes necesarias para poder interactuar con mysql desde Java. Se puede poner el archivo en el directorio usual para las classes de java (el directorio donde hacen las tareas, por ejemplo). A manera de ejemplo, se asumirá que el archivo se encuentra en el directorio H:\clases. Ahora es necesario agregar el jar al CLASSPATH. Para hacer esto, vamos a Inicio->Mi Pc y seleccionamos propiedades. En la lengüeta "Opciones Avanzadas", hacemos click en "Variables de Entorno",
Una vez en las variables de entorno, creamos o editamos la variable de sistema CLASSPATH, teniendo cuidado de escribir correctamente la ubicación tanto del jar, como de las carpetas en que usualmente guardamos nuestras classes. Es prudente también siempre incluir al directorio actual (el directorio donde estemos parados a la hora de compilar) en el CLASSPATH. El directorio actual, se representa por un punto ".". Los directorios en el CLASSPATH se separan por punto y coma. Si en el ejemplo, guardamos nuestras classes en H:\clases, y la ruta al conector de mysql es H:\clases\mysql-connector-java-3.1.10-bin.jar , el valor de la variable CLASSPATH, será H:\clases;H:\clases\mysql-connector-java-3.1.10-bin.jar;. (Notar que se ha incluido al directorio actual).
En este punto, nuestros programas en Java pueden conectarse a la base de datos que tenemos corriendo.
Paso 7. Un programa de ejemplo. Ahora que todo está dispuesto (tenemos un servidor de mysql corriendo, hemos creado un usuario, una base de datos, y podemos conectarnos a través del conector), es hora, de escribir un primer programa de prueba en Java. El programa completo, es, 1:import java.sql.*; 2: 3: 4:public class TestMysql { 5: public static void main(String[] args) throws SQLException { 6: new TestMysql(args); 7: } 8: 9: public TestMysql(String[] args) throws SQLException { 10: if (args.length < 3) 11: return; 12: 13: cargarDriver(); 14: 15: Connection coneccion = dameConeccion(args[0], args[1], args[2]); 16: Statement s = coneccion.createStatement(); 17: 18: /*Borramos la tabla si es que existe*/ 19: update("DROP TABLE IF EXISTS agenda", s); 20: 21: /*Creamos la tabla*/ 22: String consulta = "CREATE TABLE IF NOT EXISTS agenda (" + 23: "Run integer PRIMARY KEY," + 24: "Apaterno char(50)," + 25: "Amaterno char(50)," + 26: "Nombre char(40)," + 27: "Telefono char(15));"; 28: update(consulta, s); 29: 30: /*Insertamos mentiras con el proposito de ver que todo esté bien*/ 31: update("INSERT INTO agenda VALUES (11,\'Doe\',\'Doe\',\'John\', \'5555555\')", s); 32: update("INSERT INTO agenda VALUES (12,\'Doe\',\'Doe\',\'Jane\', \'2222222\')", s); 33: update("INSERT INTO agenda VALUES (13,\'Perez\',\'J\',\'Juan\', \'1111111\')", s); 34: 35: /*Probamos si en realidad hay consistencia Rut es llave y 11 ya esta en uso */ 36: update("INSERT INTO agenda VALUES (11,\'Nadie\',\'Jajajaja\',\'Jejejeje\', \'8888888\')",s); 37: 38: /*Pedimos los datos de vuelta*/ 39: consulta = "SELECT * FROM agenda"; 40: 41: ResultSet rs = s.executeQuery(consulta); 42: System.out.println( 43: "\n\n######### Datos #########\n"); 44: 45: while (rs.next()) { 46: System.out.println( 47: rs.getString("Run") + " " + 48: rs.getString("Apaterno") + " " + 49: rs.getString("Amaterno") + " " + 50: rs.getString("Nombre") + " " + 51: rs.getString("Telefono")); 52: } 53: 54: s.close(); 55: coneccion.close(); 56: } 57: 58: public void update(String update, Statement s) { 59: 60: try { 61: s.executeUpdate(update); 62: } catch (SQLException e) { 63: System.out.println( 64: "->La consulta:\n->" + update + "\n->Ha Fallado. Traza:\n"); 65: e.printStackTrace(); 66: } 67: } 68: 69: private Connection dameConeccion(String database, String user, 70: String password) throws SQLException { 71: 72: try { 73: String url = "jdbc:mysql://localhost/" + database; 74: Connection ret = DriverManager.getConnection(url, user, password); 75: System.out.println("Pude conectarme a la base de datos."); 76: 77: return ret; 78: } catch (SQLException e) { 79: System.out.println( 80: "No pude conectarme a la base de datos. Suicidandome :D ..."); 81: throw (e); 82: } 83: } 84: 85: public void cargarDriver() { 86: 87: try { 88: Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 89: } catch (Exception e) { 90: System.out.println("No pude cargar el driver. Suicidandome :D ..."); 91: e.printStackTrace(); 92: System.exit(1); 93: } 94: } 95:} Las partes importantes del programa (relativas a mysql) son el método cargarDriver(), y el método dameConeccion(...). El primero de ellos, carga el driver de mysql para java (como su nombre lo indica). Lo más importante es que si esta parte del programa corre sin problemas, quiere decir que incluímos correctamente al conector en el CLASSPATH. El método dameConeccion(String database, String user, String password) inicia una coneccion con el servidor mysql. Si vemos la llamada que se hace en el constructor a este método, notaremos que los argumentos de la línea de comandos van en el mismo orden de los argumentos de la función, por lo que una correcta llamada al programa sería, java TestMysql cc10a condorito yayita Por otro lado, intencionalmente se muestra en la línea 36 del programa, que quien se encarga de conservar la consistencia de la base de datos es mysql. En esa línea, se trata de introducir un valor a la tabla, cuyo campo llave está repetido. (Una llave es un campo único, no repetible entre registros. Por ejemplo el Run de una persona es una buena llave, pues en la realidad no hay dos personas (posibles registros) con el mismo Run). El ejemplo puede usarse y modificarse a gusto para usar toda maquinaria aprendida en clases, y, por ejemplo generar consultas más sofisticadas usando más de una tabla. El código fuente del programa está acá
Paso 8. Cerrar el Servidor Mysql. Para cerrar el servidor mysql, se debe entrar el siguiente comando en una ventana de cmd, mysqladmin -u root shutdown -p Les pedirá la password de root, que se fijó en el paso 5. Si todo resulta bien, el servidor se cerrará de forma correcta.
Comentarios o sugerencias en U-cursos.
|