MySQL

0 1226

mysqladmin es una utilidad para realizar tareas de mantenimiento de nuestras bases de datos, que viene incluida en la distribución de mysql.

Su sintaxis es:

# mysqladmin [OPCIONES] comando [opciones de comando] comando2 ...

Puedes obtener una lista de las opciones disponibles en tu version de mysql tecleando

# mysqladmin --help|more

Veamos más a fondo los usos de mysqladmin:

1.- ¿ Cómo cambiar la contraseña del usuario root de MySQL?

# mysqladmin -u root -pxxx password 'yyy'

Donde xxx es el actual password del usuario root, y yyy es el nuevo password.

2.- ¿Cómo verificar que el servidor de MySQL está corriendo?

# mysqladmin -u root -pxxx ping

3.- ¿Cómo saber que versión de MySQL estoy corriendo?

# mysqladmin -u root -pxxx version

4.- ¿Cuál es el estado actual del servidor MySQL?

# mysqladmin -u root -pxxx status

El comando status muestra la siguiente información:

Uptime: segundos desde los que se inició el servidor
Threads: número total de clientes conectados
Questions: número total de consultas que el servidor ha ejecutado desde desde su inicio.
Slow queries: número total de consulta que el servidor ha ejecutado y que tienen un tiempo mayor de ejecución a la variable long_query_time.
Opens: número total de tablas abiertas por el servidor.
Flush tables: cuantas tablas han sido “volcadas”.
Open tables: número total de tablas abiertas en la base de datos.

5.- ¿Cómo ver las variables de estado de MySQL y sus valores actuales?

# mysqladmin -u root -pxxx extended-status

6.- ¿Cómo ver las variables del sistema de MySQL y sus valores?

# mysqladmin -u root -pxxx variables

7.- ¿Cómo ver todos los procesos/consultas ejecutándose en la base de datos?

# mysqladmin -u root -pxxx processlist

También puedes correr este comando automáticamente cada un segundo de la siguiente forma:

# mysqladmin -u root -pxxx -i 1 processlist

8.- ¿Cómo crear una base de datos MySQL?

# mysqladmin -u root -pxxx create basedeprueba

9.- ¿Cómo eliminar una base de datos MySQL?

# mysqladmin -u root -pxxx drop basedeprueba

10.- ¿Cómo recargar/refrescar los privilegios de la tabla de permisos?

# mysqladmin -u root -pxxx reload 

El comando refresh hará un flush de todas las tablas y cerrará/abrirá los archivos de log.

# mysqladmin -u root -pxxx refresh

11.- ¿Cuál es el método seguro de detener el servidor MySQL?

# mysqladmin -u root -pxxx shutdown

12.- Listado de todos los comandos flush

# mysqladmin -u root -pxxx flush-hosts
# mysqladmin -u root -pxxx flush-logs
# mysqladmin -u root -pxxx flush-privileges
# mysqladmin -u root -pxxx flush-status
# mysqladmin -u root -pxxx flush-tables
# mysqladmin -u root -pxxx flush-threads

13.- ¿Cómo matar un proceso pendiente de un cliente MySQL?
Previo a este comando es necesario identificar el thread a eliminar ejecutando el comando processlist de mysqladmin.

# mysqladmin -u root -pxxx kill 20

14. ¿Cómo iniciar y parar la replicación en un servidor esclavo?

# mysqladmin -u root -pxxx stop-slave
# mysqladmin  -u root -pxxx start-slave

15. ¿Cómo combinar múltiples comandos de mysqladmin juntos?

# mysqladmin  -u root -pxxx process status version

Fuente: http://luauf.com/2009/01/21/15-usos-practicos-de-mysqladmin/

0 2024

Ya vimos como instalar un ambiente LAMP en Archlinux en un post pasado (http://www.k4ch0.org/2009/06/05/lamp-linux-apache-mysql-php-en-archlinux/)

Ahora instalaremos phpMyAdmin para tener todo un entorno de trabajo enfocado a desarrollos con PHP + MySQL.

Partimos del hecho de que ya esta instalado Apache, MySQL y PHP.

El primer paso es instalar phpMyAdmin:

# pacman -Sy phpmyadmin

Una vez instalado editaremos el archivo /etc/php/php.ini y descomentamos las siguientes lineas: (quitando el “;”)

;extension=mysql.so
;extension=mcrypt.so

Para poder usar la extensión mcrypt, tenemos que instalarla y eso lo logramos con:

# pacman -Sy mcrypt

A su vez, editamos el archivo /etc/httpd/conf/httpd.conf y agregamos las lineas:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Finalmente reiniciamos el servidor web:

# /etc/rc.d/httpd restart
Pantalla de entrada de phpmyAdmin
Pantalla de entrada de phpmyAdmin

16 19540

Lo primero que necesitamos para conectarnos con una base de datos es un Driver (o Connector).

Ese Driver es la clase que, de alguna forma, sabe cómo interactuar con la base de datos. Desgraciadamente (y hasta cierto punto es lógico), java no viene con todos los Drivers de todas las posibles bases de datos del mercado. Debemos ir a internet y obtener el Driver, normalmente en la página de nuestra base de datos

Para el caso de MySQL, podemos descargarlo de http://dev.mysql.com/downloads/connector/j/5.1.html.Nos bajamos el mysql-connector-java-5.1.8.zip, lo desempaquetamos en algún sitio y nos quedamos con el mysql-connector-java-5.1.8-bin.jar que viene dentro. En ese jar está la clase Driver que nos interesa.
Ponerlo en la variable de entorno CLASSPATH, siempre que nuestro IDE (eclipse, netbeans, etc) haga caso de esa variable. Desde consola es:

$ set CLASSPATH=<PATH_DEL_JAR>\mysql-connector-java-5.0.5-bin.jar

Añadirlo en nuestro IDE. En el ejemplo de eclipse, damos con el botón derecho del ratón sobre el proyecto, para sacar el menú y elegimos “properties“->”java build path“->”Libraries“->”Add external JARs…” y seleccionamos nuestro jar.

Con eso ya tenemos instalado el driver necesario para MySQL, ahora vamos a usarlo en un programa:

import java.sql.*;

public class Basededatos {
private Connection conexion;
static String bd="Base_de_Datos";
static String user="Usuario_Base_de_Datos";
static String password="Contraseña";
static String server="jdbc:mysql://localhost/"+bd;

/** Creates a new instance of BasedeDatos */
public Basededatos() {
}

public void establecerConexion(){
try{
Class.forName("com.mysql.jdbc.Driver");
conexion = DriverManager.getConnection(server,user,password);
}
catch(Exception e){
System.out.println("Imposible realizar conexion con la BD");
e.printStackTrace();
}
}

public Connection getConexion(){
return conexion;
}

public void cerrar(ResultSet rs){
if(rs !=null){
try{
rs.close();
}
catch(Exception e){
System.out.print("No es posible cerrar la Conexion");
}
}
}

public void cerrar(java.sql.Statement stmt){
if(stmt !=null){
try{
stmt.close();
}
catch(Exception e){}
}
}

public void destruir(){

if(conexion !=null){

try{
conexion.close();
}
catch(Exception e){}
}
}
}

Si todo va bien, tendremos nuestra conexión a la base de datos. Si va mal, saldrá una excepción. Por eso es importante (y obligatorio para que compile) meter todo esto en un try-catch.

Esta forma de obtener una conexión está bien para aplicaciones sencillas, en el que únicamente se establece una conexión con la base de datos, no hay muchos hilos trabajando, etc.

Para permitir conexiones remotas a nuestro servidor de base de datos (MySQL) en GNU/Linux, de manera gráfica lo podemos hacer desde el Administrador de MySQL (MySQL Administrator)

Para instalarlo en Debian o Ubuntu, basta hacer:

$ sudo apt-get install mysql-admin

En ArchLinux:

$ sudo pacman -Sy mysql-gui-tools

Una vez instalado lo iniciamos desde terminal haciendo:

$ mysql-admin

Ó en el caso de ArchLinux:

$ mysql-administrator

Con MySQL-Administrator podremos crear bases de datos (esquemas), crear tablas, exportar datos, importar datos, hacer copias de seguridad, restaurar copias, …

MySQL-Administrator
MySQL-Administrator

En el cual llenaremos los datos que corresponden con nuestro usuario, en nuestro caso el servidor esta en localhost (la misma maquina) y es el usuario root. Al final ponemos la contraseña de dicho usuario.

Una vez que nos hallamos loogeado, nos aparecerá esta otra pantalla:

MySQL-Administrator
MySQL-Administrator

Escogemos la pestaña “Startup Parameters” y ahí desmarcamos la opción “Disable Networking” y damos click en “Save Changes

MySQL Administrator
MySQL Administrator

Como se puede observar en la parte inferior de la ventana anterior nos indica la ubicación y el nombre del fichero de configuración que también se puede modificar manualmente: /etc/mysql/my.cnf, abriendo este fichero y comentando la línea “skip-networking“, es decir, añadiendo “#” delante produciremos el mismo efecto que haciéndo en MySQL Administrator.
Reiniciaremos MySQL Server (para que los cambios tengan efecto) con el comando:

$ sudo /etc/init.d/mysql restart

Introduciremos los datos de conexión remoto (host, usuario y contraseña) y accederemos a la ventana de MySQL Administrator, seleccionaremos la opción “User Administration“, luego pulsaremos con el botón derecho sobre cualquier usuario, en esta caso lo hacemos sobre el usuario “root” , nos aparecerá un menú emergente y seleccionaremos la opción “Add Host“:

MySQL Administrator
MySQL Administrator

En la ventana de “Add Host” marcaremos la opción “Hostname or IP” e introduciremos la IP del PC al que queramos permitirle el acceso remoto (admite comodines, por ejemplo 192.168.1.%) y pulsaremos “OK“:

MySQL Administrator
MySQL Administrator

Por último, accederemos a la pestaña “Schema Privileges” para especificar a qué bases de datos tendrá acceso el usuario y qué permisos tendrá sobre las mismas, para ello marcaremos en “Schema” la base de datos a la que queramos permitir el acceso y en “Available Privileges” marcaremos las acciones permitidas sobre la base de datos:

MySQL Administrator
MySQL Administrator

A continuación pulsaremos el botón con una flecha a la izquierda (Grant Privilege) y los privilegios seleccionados pasarán a la columna “Assigned Privileges“. Para guardar los cambios pulsaremos en “Apply Changes“.
Con esto habremos terminado de configurar MySQL Server para el acceso tanto local (desde la propia máquina donde está instalado) como remoto (desde equipos de la red local o, incluso equipo de fuera de la red local).

Será conveniente reiniciar otra vez MySQL Server con el comando:

$ sudo /etc/init.d/mysql restart

Desde cualquier otro PC que tenga instalado MySQL Administrator o cualquier programa que pueda acceder a MySQL podremos comprobar que funciona correctamente.
Desde consola, podemos probrarlo haciendo:

$ mysql -u root -p base_de_datos -h xxx.xxx.xxx.xxx

Espero sea de su ayuda.

2 1493

Greylite es un filtro de spam de código abierto que funciona del lado del servidor de excepcional eficacia y sin falsos positivos. Se implementa un innovador sistema de filtrado que es fruto de dos años de investigación sobre el comportamiento de los spammers.

Greylite es una solución sostenible: no aumenta la carga en su sistema (de hecho, la mejora), y el rendimiento no se degrada con el tiempo.
Greylite funciona como un envoltorio transparente SMTP. Esto lo hace compatible con cualquier servidor SMTP y requiere un proceso de configuración trivial con un mínimo de intrusión en el sistema existente. Cuando en el servidor se ejecuta qmail, puede ser integrado directamente en su cadena de ucspi.

El primer paso que debemos realizar es bajar la última versión de greylite desde la siguiente página:
http://www.greylite.net/download.html

# cd /usr/local/src/
# wget -c http://www.greylite.net/downloads/releases/greylite/greylite-3.0pre2.tar.bz2
# rm *.tar.bz2

Extraemos el contenido del archivo que descargamos:

# tar xjvf greylite-VERSION.tar.bz2
# cd greylite-VERSION

Y compilamos, con soporte de Mysql y con soporte de geoip

# make all install WITH_MYSQL=yes WITH_GEOIP=yes 

Una vez que lo tengamos compilado vamos a configurar la instalación con Mysql. Y eso lo logramos editando el archivo que se encuentra en: /usr/local/src/greylite-3.0pre2/scripts/

# vim /usr/local/src/greylite-3.0pre2/scripts/greylite-mysql.sql

Modificamos la contraseña del usuario que se creará con dicho script, que se encuentra en la tercera linea y posteriormente corremos el script para que se cree el usuario de MySQL, la base de datos y las tablas necesarias.

# mysql > /usr/local/src/greylite-3.0pre2/scripts/greylite-mysql.sql -u root -p 

Editamos el archivo que se encarga de mandar los correos, localizado en: /var/qmail/supervise/qmail-smtpd/run y modificamos las lineas:

/usr/local/bin/tcpserver -v -R -l "$LOCAL" \ -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \ /var/qmail/bin/qmail-smtpd 2>&1

Y agregamos el siguiente comando:

/usr/local/bin/tcpserver -v -R -l "$LOCAL" \ -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \ /usr/local/bin/greylite /var/qmail/bin/qmail-smtpd 2>&1

Reiniciamos el servicio de qmail:

# qmail restart

Ahora procedemos a editar es archivo /etc/tcm.smtp, y agregamos las siguientes lineas:

:allow,DBRESOURCE=":greylite:pass_de_mysql:greylite::/var/run/mysqld/mysqld.sock",GREYLIST="",SUSPICION="/etc/greylite/suspicion.conf",QMAILQUEUE="/var/qmail /bin/qmail-scanner-queue.pl"

Con lo cual le estamos indicando que use greylite para verificar IP’s y le pasamos el password de mysql para el usuario greylite. Ahora regeneramos las el archivo de reglas de tcpserver:

# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 

Y checamos que las reglas se hallan guardado de manera correcta:

# tcprulescheck /etc/tcp.smtp.cdb 

Qué nos debe de regresar algo parecido a esto: rule :

set environment variable DBRESOURCE=:greylite:pass_de_mysql:greylite::/var/run/mysqld/mysqld.sock set environment variable GREYLIST= set environment variable SUSPICION=/etc/greylite/suspicion.conf set environment variable QMAILQUEUE=/var/qmail/bin/qmail-scanner-queue.pl allow connection

Probamos que greylite funcione de manera correcta, con el comando telnet, el cual nos debe de regresar un error 400 (4xx) la primera vez que lo hagamos, despues de 30 segundos se puede intentar de nuevo y de esta manera verificar que la IP no es SPAM.

# telnet my.server.com 25 Trying 1.2.3.4...
Connected to my.server.com.
Escape character is '^]'.
220 my.server.com ESMTP
HELO asd 250 my.server.com
MAIL FROM: 250 ok
RCPT TO: 451 qqt failure (#4.3.0) -- or -- 452 insufficient system storage

Y ya podremos verificar en mysql las IP’s verificadas y las IP’s pendientes por verificar desde MySQL.


Warning: Parameter 1 to W3_Plugin_TotalCache::ob_callback() expected to be a reference, value given in /home/admin/web/k4ch0.org/public_html/wp-includes/functions.php on line 3594