Desde el directorio donde se desee decargar el script SQL, teclear en la terminal:
wget https://arielortiz.info/s202411/tc2005b/quotations.sql
Se puede usar el editor de textos de Cloud9 para visualizar el contenido del archivo quotations.sql
recién descargado. Este archivo será utilizado para hacer unas pruebas más adelante.
Actualizar los paquetes del sistema. En la terminal, teclear:
sudo apt update
sudo apt upgrade -y
Instalar el servidor de MySQL. Teclear en la terminal:
sudo apt install mysql-server -y
Para verificar que el servidor de MySQL esté efectivamente funcionando se puede ejecutar desde la terminal el siguiente comando en cualquier momento:
service mysql status
La salida debe incluir los siguientes mensajes si el servidor está ejecutándose de manera correcta:
Active: active (running)
Status: "Server is operational"
Si es necesario, presionar la tecla Q
para cerrar la aplición service
.
root
Ingresar al cliente de MySQL. Teclear en la terminal:
sudo mysql
En el prompt de MySQL teclear el siguiente commando, sustituyendo some_password
por la contraseña elegida:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'some_password';
Salir del cliente de MySQL presionando Ctrl-D.
Después de ejecutar los comandos de la sección anterior, la forma de correr el cliente de MySQL requiere teclear en la terminal lo siguiente:
mysql -u root -p
La aplicación solicita la contraseña elegida en la sección anterior en lugar de some_password
.
A partir de este momento es posible ejecutar cualquier comando de SQL en el prompt de MySQL. Por ejemplo, para ver todas las bases de datos existentes, teclear:
SHOW DATABASES;
Para correr el script descargado anteriormente, teclear:
SOURCE quotations.sql
Para realizar una consulta, solo se requiere teclearla directamente, por ejemplo:
SELECT DISTINCT author FROM quotations ORDER BY author;
Presionar Ctrl-D para salir del cliente de MySQL.
Abrir en el editor el archivo .bashrc
contenido en el directorio raíz del usuario del ambiente de Cloud9 para definir como variables de entorno el nombre de usuario y constraseña de MySQL. Para localizar dicho archivo se requiere activar la opción de “Show Hidden Files” en el menú de configuración del ambiente.
Ir al final del archivo .bashrc
y agregar las siguientes dos líneas:
export MYSQL_USER="root" export MYSQL_PASSWORD="some_password"
NOTA: Sustituir some_password
por la contraseña seleccionada anteriormente.
Guardar el archivo.
Cerrar la terminal y abrir una nueva para que tomen efecto los valores de las nuevas variables de entorno. Para verificar que así sea, teclar en la terminal:
echo $MYSQL_USER
echo $MYSQL_PASSWORD
Dichos comandos deben desplegar los valores asociados a las respectivas variables de entorno.
En un programa de JavaScript corriendo en Node se pueden acceder a los valores de estas variables de entorno de la siguiente manera:
process.env.MYSQL_USER
process.env.MYSQL_PASSWORD
Instalar el paquete de MySQL para Node. En la terminal teclear:
npm install mysql
En el editor crear un archivo llamado mysql_select.js
con el siguiente programa de JavaScript como contenido:
// File: mysql_select.js // Import the mysql and util modules const mysql = require('mysql'); const util = require('util'); // Create a connection to the database const db = mysql.createConnection({ host: 'localhost', // The host where the // database is located database: 'web_database', // Database name user: process.env.MYSQL_USER, // Database username password: process.env.MYSQL_PASSWORD // Database password }); // Convert the connect and query methods from callback-based // to promise-based db.connect = util.promisify(db.connect); db.query = util.promisify(db.query); // An async function to connect to the database async function connectToDatabase() { try { // Try to connect to the database await db.connect(); // If successful, log a success message console.log('Connected to database.'); } catch (err) { // If an error occurs, log an error message and // re-throw the error console.log('Unable to connect to the database.'); throw err; } } // An async function to perform a SELECT operation on the // database async function do_select() { // The SQL query to execute const sqlQuery = 'SELECT DISTINCT author ' + 'FROM quotations ORDER BY author'; try { // Try to execute the query const result = await db.query(sqlQuery); // If successful, log a success message console.log('Success!'); // Loop through the result and log each author for (let row of result) { console.log(row.author); } // Close the database connection db.end(); } catch (err) { // If an error occurs, re-throw the error throw err; } } // Immediately Invoked Function Expression (IIFE) to run the // async functions. This is used for top-level await which is // not allowed outside of functions. (async () => { // Connect to the database await connectToDatabase(); // Perform the select operation await do_select(); })();
Correr el programa anterior. Teclear en la terminal:
node mysql_select.js
La salida esperada es la siguiente:
Connected to database. Success! Alan Kay Alan Turing Anonymous Aristotle Brian Kernigan Charles Babbage Chinese Proverb Donald Knuth Douglas Adams Edsger Dijkstra Fred Brooks George Boole Grace Hopper Harold Abelson Homer Simpson Howard Aiken Isaac Asimov Jan van de Snepscheut Kent Beck Linus Torvalds Radia Pearlman Thomas Watson