Mostrando entradas con la etiqueta phpmyadmin. Mostrar todas las entradas
Mostrando entradas con la etiqueta phpmyadmin. Mostrar todas las entradas

26 de febrero de 2012

Limitar acceso phpmyadmin a localnet

(1) Crear el archivo:
/usr/shares/phpmyadmin/.htaccess

deny from all
allow from 127.0.0.1
allow from 192.168.1

Este ejemplo permite el acceso desde el localhost y desde la subnet 192.168.1.1-255. Se pueden poner los host individuales o subnets que se quieran, o algun host externo, ip o url, con acceso permitido.

(2) Añadir al archivo:  /etc/phpmyadmin/apache.conf
... ...
Directory /usr/share/phpmyadmin

... ...
                AllowOverride All
... ...

/Directory
... ...


Con esto activamos el fichero .htaccess en /usr/share/phpmyadmin

(3) Y reiniciar apache2:
# /etc/init.d/apache2 restart

23 de diciembre de 2011

Tutorial para instalar dadabik

Tutorial para instalar dadabik.

Yo lo he probado en mi servidor micra, con debian 6.0, apache, php y MySQL instalados.

1) Creamos un subdirectorio ./dadabik en un carpeta en nuestro equipo al que se pueda acceder via web.

2) Descargamos dadabik de http://sourceforge.net/projects/dadabik/files/dadabik/

la versión actual es dadabik_4.4_alpha

3) Descomprimimos el .zip  # unzip dadabik_4.4_alpha.zip

4) Modificamos el fichero ./dadabik_4.4_alpha/program_files/include/config.php
añadiendo como mínimo esta info:

$dbms_type = ' '; // dbms type ('mysql'|'postgres'|'postgres64'|'mssql'|'oci8po'|'sqlite') (mssql is MS SQL Server, oci8po is Oracle, postgres64 is for PostgreSQL vers. <= 6.4)


$host = ' '; // DBMS server host

$db_name = ' ';  // database name

$user = ' ';  // database user

$pass = ' ';  // database password

5) Instalamos dadbik accediendo desde el navegador a la dirección:
http://nuestro_host/dadabik_4.4_alpha/program_files/install.php
 ... ...instalamos dadabik

6) .. y ya podemos acceder en la dirección: 
http://nuestro_host/dadabik_4.4_alpha/program_files/index.php

NO me permite hacer un enlace simbólico desde el directorio con acceso web a otro directorio donde pondría dadabik ya que aparecen errores include al intentar acceder a otros archivos de los directorios de dadabik.

Mi primera impresión ha sido: "para esto ya tengo phpMyAdmin".
Pero puede ser interesante para permitir acceso restringido a ciertas bases de datos por web, permitiendo la consulta y/o modificación de registros segun los casos. Y ademas su puesta en marcha es rapídísima.

3 de septiembre de 2011

MySQL FULLTEXT. Indexando texto para busquedas


Imaginemos que en esas noches de insomnio dedicadas a las máquinas hemos programado un spider en Perl o PHP que hora a hora ha visitado varios milloncejos de webs, scrapeando y almacenando código html en una base de datos MySQL, ...es un suponer!!!
Y pasado el tiempo llega el momento de hacer alguna busqueda en la ingente cantidad de código html almacenado en la MySQL.

Siqueremos buscar la palabra "pepe" en el campo que almacena el html:

SELECT * FROM tabla WHERE html LIKE '%pepe%';

... y la busqueda se realiza pero es enormemente lenta.

La razón es que motor de búsqueda tienen que revisar todos los interminables campos de la interminable base de datos.

Incluso he probado este tipo de búsquedas sobre bases de datos con campos extensos de texto en diferentes máquinas (AMD geode 500MHz 500MB RAM y Pentiun 2800MHz 5ooMB RAM) y el tiempo de consulta es curiosamente el mismo!!!.
Esto me dio a entender que algo estaba haciendo mal.



Como vemos para mejorar las búsquedas sobre campos extensos de texto hay varios métodos y herramientas que permiten hacer búsquedas eficientes en este tipo de bases de datos:
Ref: Practical Full Text Search with MySQL
(aqui hay links a otras interesantes presentaciones sobre el tema)

Voy a probar MySQL FULLTEXT ya que esta integrada en MySQL y aprovecho la estructura existente de la base de datos.

MySQL FullText HowTo

Por lo que veo FULLTEXT crea un índice que agiliza la búsqueda en campos de texto.
Este índice se puede generar en tablas nuevas o preexistent es usando:

CREATE TABLE ... FULLTEXT :
CREATE TABLE table_name(
‘column1’ data_type,
‘column2’ data_type,
...
PRIMARY_KEY(‘key_column’),
FULLTEXT (‘column_name1’,’column_name2’,..)
) ENGINE=MyISAM;
ALTER TABLE ... FULLTEXT:
ALTER TABLE table_name
ADD FULLTEXT(column_name1, column_name2,…)

Como ya tenemos la base de datos MySQL hecha y llenita de información, generamos el índice mediante ALTER TABLE ... FULLTEXT ...

ALTER TABLE spider01 ADD FULLTEXT (`html`,`mtag_keywords`,`mtag_descript`,`mtag_titulo`,`webtitulo`)
Su consulta se ejecutó con éxito ( La consulta tardó 384.8188 seg )

Eliminar campos del indice FULLTEXT
Para eliminar campos del indice FullText creado:

ALTER TABLE "table" DROP INDEX "campo1, campo2,...";


MySQL FULLTEXT con phpMyadmin:
Como no podría ser de otra manera todo esto se puede hacer con phpMyadmin a golpe de ratón. Este programa no deja de maravillarme.


Búsquedas con MySQL FULLTEXT:
En este punto, una vez que tenemos preparada nuestra base de datos para hacer busquedas con FULLTEXT, es imprescindible revisar las inmensas capacidades de esta herramienta de MySQL.

La búsqueda no es sensible a las mayúsculas.

De forma general tenemos la búsqueda mas básica:
SELECT * FROM spider01 WHERE MATCH html AGAINST '%pepe%';

Aqui vemos una mas que notable mejoría en tiempo de búsqueda:


Los modos de búsqueda son:

IN NATURAL LANGUAGE
  • Trata el texto como una frase.
  • Si no se indica nada se usa el Natural Lenguage por defecto.
  • Ordena los registros por relevancia.
  • Las palabras con menos de 4 letras son ignoradas. Esto se puede configurar con las variables: ft_min_word_len y ft_max_word_lenFullText.
  • Las palabras de la lista de StopWords son ignoradas. Esto se puede inactivar o modificar cambiando la variable ft_stopword_file.
  • Las palabras que aparecen en mas del 50% de los registros es varemada con un valor 0. Esto es bueno en grandes bases de datos pero malo en pequeñas.
Ref.:

IN BOOLEAN MODE
No ordena el resultado por relevancia
No usa la lista de StopWords.
Combina las palabras de la busqueda segun los operadores lógicos indicados.
Por defecto los combina con OR.


WITH QUERY EXPANSION


Reindexando la tabla
Caundo se cambia el ínice o las varibles de FULLTEX hay que reindexar:

REPAIR TABLE tbl_name QUICK;



26 de agosto de 2011

Tabla desde Excel a MySQL

Aqui hay un método guardando la tabla excel como .csv, quitar la 1º línea de los campos, hacer una tabla en MySQL con los campos correspondientes e importar datos con:

LOAD DATA INFILE ‘ubicación/del/archivo’ INTO TABLE ‘nombre_de_la_tabla’

FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\n’;

http://www.puntogeek.com/2011/06/24/de-excel-a-mysql-facilmente-y-sin-romperte-la-cabeza/

... aunque leo en los comentarios que se puede hacer directamente con phpMyadmin, y efectivamente está: