viernes, 25 de abril de 2014

Actualizar manualmente phpMyAdmin en Linux

Explicaremos como actualizar de forma manual el phpMyAdmin a la versión más reciente, para ello primero bajaremos el paquete comprimido mas actual de la siguiente dirección http://www.phpmyadmin.net/home_page/downloads.php, antes de ello tendremos que verificar los requerimientos mínimos del paquete. En mi caso bajare la versión 4.1.13 donde se indica que se requiere como mínimo PHP 5.2 y MySQL 5, aunque se recomienda PHP 5.3 y MySQL 5.5. Les recomiendo que el archivo que bajemos se descomprima por consola en nuestro servidor.

1. Subir el archivo a nuestro servidor
Puede ser en nuestra carpeta home o directamente en la ubicación del phpMyAdmin: /usr/share

2. Renombrar el phpMyAdmin anterior

$ sudo mv /usr/share/phmyadmin /usr/share/phpmyadmin-backup

Esto con la finalidad de tener un respaldo por si algo llega a salir mal.

3. Descomprimir el archivo
La ruta donde lo tenemos que descomprimir es en /usr/share

$ sudo tar -xvf phpMyAdmin-4.1.13-all-languages.tar.gz

Renombramos la carpeta que se genero al descomprimir como: phpMyAdmin

$ sudo mv phpMyAdmin-4.1.13-all-languages phpMyAdmin

4. Probamos el acceso a phpMyAdmin

En el navegador probamos que podamos acceder: http://localhost/phpMyAdmin, y listo ya tenemos phpMyAdmin actualizado.

Una vez que no existan problemas al acceder, podemos eliminar el archivo comprimido (.tar.gz) y el phpMyAdmin con la versión anterior (phpMyAdmin-backup). Recordemos que en caso que se requiera editar la configuración podemos acceder a /etc/phpmyadmin/config.inc.php el cual es nuestro archivo de configuración del phpMyAdmin.

jueves, 24 de abril de 2014

Instalar FreeTDS en Ubuntu para usar mssql en PHP

A partir de PHP 5.3 la extensión (mssql) para permitir el acceso a base de datos MS SQL Server ya no esta disponible en Windows, en lugar de ello tendremos que usar la extensión de ODBC pero ese es otro tema, aqui veremos una opción para acceder a bases de datos de SQL Server utilizando la libreria FreeTDS (Tabular Data Stream).

FreeTDS es un conjunto de librerias distribuidas libremente bajo licencia GNU/GPL, que nos permite comunicar PHP con bases de datos de SQL Server y Sybase.

1. Desde linea de comandos instalamos freeTDS asi como la libreria sybase de PHP

$ sudo apt-get install freetds-common freetds-bin tdsodbc php5-sybase

Reiniciamos nuestro servidor web y probamos en el navegador, creando un archivo php con la función phpinfo(), verificando que la libreria mssql se encuentra ya instalada.



2. Configuramos FreeTDS
Editamos el archivo freetds.conf que se encuentra en /etc/freetds

$ sudo nano /etc/freetds/freetds.conf

Dentro del archivo vienen algunos ejemplos de configuración, he aquí un ejemplo de como configurar:

[nombreservidor]
host = 100.100.100.1
port = 1433
tds version = 7.2

con [nombreservidor] es como haremos referencia a nuestro servidor , en host agregamos nuestra IP del servidor, el puerto (port) para servidores de SQL Server es el 1433, tds version es la versión del SQL que estaremos usando.
  1.  7.0 -- Microsoft SQL Server 7
  2.  7.1 -- Microsoft SQL Server 2000
  3.  7.2 -- Microsoft SQL Server 2005 o posterior
Una vez terminado de configurar el archivo, lo guardamos.

3. Probando nuestra conexión
Para ver si todo esta correcto realizamos una prueba:

$ tsql -S nombreservidor -U usuariosql

en seguida se pedira el password, si no hay problema, habremos ingresado a nuestro servidor SQL. Recordemos que nombreservidor es nuestra referencia que ingresamos en nuestro archivo de configuración freetds.conf.

4. Probando nuestra conexión en PHP
Ya tenemos todo listo para comenzar a trabajar en php con mssql, podemos crear un archivo en php y probar nuestra conexion.

<?php
/** Conexión a SQL Server **/
$host    = "nombreservidor"; // esta es nuestra referencia
$usuario = "sa";
$pass    = "12345;
$bd      = "miBase";
$conexion = mssql_connect($host, $usuario, $pass);
if (!$conexion) die ("Error al conectar a SQL server");
mssql_select_db($bd) or die ("Error al seleccionar la Base de datos");
echo "Conexion establecida con éxito";
?>

Guardamos nuestro archivo y lo probamos en nuestro navegador, si no hubiese problemas debe mostrarse el mensaje de Conexión establecida con éxito.

Instalar Apache, PHP y MySQL en Ubuntu

Una vez que tenemos instalado Ubuntu, si deseamos tener un servidor Web, como Apache, con PHP y MySQL, he aquí explicaremos como realizar esta instalación mediante consola, cabe mencionar que es una instalación básica no tan segura y por lo tanto no recomendada para un servidor en producción, pero esto nos servirá para montar un servidor local para nuestros trabajos.

1. Instalamos el servidor Apache:
$ sudo apt-get install apache2 -y

El parametro -y no pregunta y asume que si a todo. Una vez que termina de instalar podemos probar en nuestro navegador con:
http://localhost ó http://127.0.0.1
nos aparecerá un mensaje que nuestro servidor se encuentra trabajando.

2. Instalamos PHP 5
$ sudo apt-get install php5 libapache2-mod-php5 -y

Una vez instalado, reiniciamos nuestro servidor web
$ sudo service apache2 restart
o bien
$ sudo /etc/init.d/apache restart

El directorio por default para subir todas nuestras aplicaciones de php sera en: /var/www, en lo posterior tendremos que tener un usuario que tenga permisos sobre esta carpeta, por el momento en esta carpeta podremos probar si el php esta función, creando un archivo con la función phpinfo(), por ejemplo

$ sudo nano info.php

dentro del archivo colocamos las lineas:

<?php    phpinfo();    ?>

Lo guardamos (ctrl + x), cargamos nuestra página en el navegador (http://localhost/info.php) y nos debe mostrar la configuración de nuestro servidor web.

3. Instalamos MySQL 5
$ sudo apt-get install mysql-server mysql-client -y

Casi al terminar la instalación se nos pedirá la contraseña del root y su confirmación, es muy importante recordar esta contraseña y no perderla. Para probar la instalación tendremos que accesar a nuestro servidor MySQL.
$ mysql -u root -p

Acto seguido se pedira la contraseña que será la que ingresamos en la instalación, la ingresamos y listo tenemos nuestro servidor MySQL instalado.

4. Instalar modulos faltantes de PHP
En seguida tendremos que instalar todos los módulos que hacen falta, entre ellos va el soporte de la librería GD, CURL, MySQL, etc.
$ sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl -y

Una vez terminada la instalación tendremos que reiniciar nuevamente nuestro servidor web, como ya se describio en las lineas anteriores, y listo ya tenemos instalado Apache, PHP y MySQL.

miércoles, 9 de abril de 2014

Configurar usuario admin en Tomcat

Una vez que tenemos instalado nuestro servidor Tomcat, ahora es necesario configurar un usuario admin para subir, arrancar, detener o simplemente ver nuestras aplicaciones. Para ello tenemos que editar el archivo tomcat-users.xml que se encuentra en nuestra carpeta de configuración del Tomcat (por ejemplo /etc/tomcat6/).

Dentro de los tag <tomcat-users> creamos el role de manager, seguido de la linea donde agregamos los datos de usuario, quedando de la siguiente forma:

<!--
  NOTE:  By default, no user is included in the "manager-gui" role required
  to operate the "/manager/html" web application. If you wish to use this app,
  you must define such a user - the username and password are arbitrary.
-->
<tomcat-users>

    <role rolename="manager" description="Tomcat Manager"/>
    <user username="admin" password="MiPassword" roles="manager"/>

</tomcat-users>

Después de editar el archivo, guardarlo y reiniciar el Tomcat.

# service tomcat6 restart

Para usuarios del tomcat 7 los roles requeridos para administrar la aplicación fueron cambiados.

    <role rolename="manager-gui" description="Tomcat Manager"/>
    <user username="admin" password="MiPassword" roles="manager-gui"/>

Cabe mencionar que en tomcat7 existen roles específicos del manager:
  • manager-gui, interfaz gráfica en HTML y estatus de las aplicaciones
  • manager-script, interfaz en modo texto y estatus de las aplicaciones
  • manager-jmx, accesar al proxy JMX(Java Managment eXtensions) y estatus de las aplicaciones
  • manager-status, solo el estatus de las aplicaciones

lunes, 7 de abril de 2014

Evitar listado de directorios en Apache

Cuando recién instalamos nuestro servidor, por default viene con la característica de permitir el listado de directorios, el prevenirlo, nos permitirá tener una mayor seguridad en nuestro sitio.

Existen varias opciones para ello, una forma "rápida" y sencilla es crear un index (htm, html ó php) en cada directorio y subdirectorio de nuestro sitio, sin embargo podemos tener decenas de ellos lo cual seria una tarea laboriosa y tendríamos que estar agregando un index cada vez que agreguemos uno nuevo. Ahora dependiendo del acceso que tengamos a nuestro servidor tendremos dos opciones que se listan a continuación:

A. Crear un archivo .htaccess

Mediante consola, creamos un archivo llamado .htaccess en la raíz de nuestro sitio y agregamos la siguiente linea:

Options -Indexes

Lo guardamos, y con esto evitaremos que cualquier directorio que se encuentra abajo del principal liste su contenido. Esta opción es útil cuando no tenemos acceso a la configuración de nuestro servidor.

B. Modificar el archivo de configuración de Apache

En esta opción se tiene que modificar el archivo de configuración de nuestro servidor apache (httpd.conf), para ello buscamos en el archivo la linea Options Indexes FollowSymLinks:

# The option directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mode/core.html#options
# for more information.
#
Option Indexes FollowSymLinks

Una vez ubicada la linea agregaremos el caracter (-) a Indexes, quedando de la siguiente forma:

Option -Indexes FollowSymLinks

guardamos el archivo y reiniciamos nuestro servidor apache

# service httpd restart

Ahora probamos poniendo la dirección de nuestro servidor en el navegador e intentar acceder a un directorio como el de imágenes, y nos mostrara un mensaje indicando que no tenemos permiso para listar ese directorio.


viernes, 4 de abril de 2014

Importar y Exportar bases de datos MySQL por consola en Linux

Existen muchas formas de administrar el MySQL, desde la linea de comandos, usando el phpMyAdmin, hasta un software de terceros como HeidiSQL, SQLYog, MySQL Workbench entre otros, el utilizar cada una tiene sus ventajas y desventajas.

A continuación veremos como importar y exportar a través de la linea de comandos. Para ello necesitaremos iniciar una conexión remota con SSH y acceder como root o un usuario con suficientes privilegios.

Importar


Para importar una base de datos, primero es necesario subir el archivo sql que contiene la información (puede realizarse por FTP), y puede almacenarse en nuestra carpeta home. En seguida colocar el siguiente comando para importar la base de datos:

$ mysql -u miusuario -p nombreMiBd < miArchivoSQL.sql

Se pedirá a continuación la contraseña del usuario de MySQL, una vez introducida, comenzará el proceso de importación que será de pocos segundos. Esta forma es muy útil para subir base de datos de un tamaño grande.

Exportar


Para exportar una base de datos, primero tenemos que ubicarnos en la carpeta donde se realizará la exportación que puede ser nuestra carpeta home que después podremos bajar vía FTP. El comando para exportar es el siguiente:

$ mysqldump -u miusuario -p nombreMiBd > miArchivoSQL.sql


En seguida se pedirá la contraseña y acto seguido comenzara la exportación que igual durara unos pocos segundos.

Nota:
Se puede realizar tanto la importación como exportación a un servidor remoto desde nuestro servidor, para ello agregamos el parametro -h donde pondremos nuestro servidor remoto (ya sea por dominio o IP):

$ mysqldump -u miusuario -p -h www.miservidorremoto.net nombreMiBd > miArchivoSQL.sql

Este comando exportara la base de datos nombreMiBd del servidor www.miservidorremoto.net al archivo miArchivoSQL.sql en la carpeta de nuestro servidor. Para permitir esta acción tiene que estar habilitado el acceso remoto del servidor MySQL.

Si al importar la información llegase a salir el error de Got a packet bigger than 'max_allowed_packet' bytes, puedes checar la solución en mi siguiente post http://mgermano.blogspot.mx/2014/05/solucionar-el-error-got-packet-bigger.html

jueves, 3 de abril de 2014

Crear y borrar usuarios de MySQL por consola

Existen 4 formas diferentes de crear y/o modificar usuarios en MySQL:
  1. La sentencia GRANT
  2. La sentencia CREATE USER
  3. Insertando directamente en la tabla user
  4. Utilizando un administrador de MySQL como SQLyog
He aquí unas recomendaciones para crear usuarios, según la documentación oficial de MySQL:
  • Los nombres de usuario pueden tener un máximo de 16 caracteres.
  • Si se utiliza el modificar directamente la tabla user, tener cuidado de no modificar la estructura de ninguna tabla de la base mysql.

CREAR USUARIOS:

Aquí veremos como crear usuarios con la primer opción: grant
La sentencia grant nos permite crear cuentas de usuarios para MySQL y darles permiso, esta información es almacenada en las tablas de la base mysql. Primero tenemos que ingresar a nuestro servidor de base de datos como root o con una cuenta con nivel de root.

$ mysql -u root -p

Con grant se pueden asignar permisos a diferentes niveles, he aquí algunos ejemplos:

Nivel Global
En este ejemplo se crea un usuario llamado usuario con la contraseña miclave que tiene permisos sobre todas las bases de datos de nuestro servidor
mysql> GRANT ALL ON *.* TO 'usuario'@'localhost' IDENTIFIED BY 'miclave';

Nivel de Base de datos
En este ejemplo se crea un usuario llamado usuario1 con la contraseña miclave que tiene permisos sobre todas las tablas de la base de datos mibase
mysql> GRANT ALL ON mibase.* TO 'usuario1'@'localhost' IDENTIFIED BY 'miclave';

Nivel de Tabla
En este ejemplo se crea un usuario llamado usuario2 con la contraseña miclave que tiene permisos sobre la tabla mitabla de la base de datos mibase
mysql> GRANT ALL ON mibase.mitabla TO 'usuario2'@'localhost' IDENTIFIED BY 'miclave';

Con grant podemos también indicar que tipo de permisos un usuario tendrá sobre un objeto, en el siguiente ejemplo creamos un usuario que tiene permisos de seleccionar e insertar en la tabla tabla1 de la base de datos mibase2:
mysql> GRANT SELECT, INSERT ON mibase2.mitabla1 TO 'miusuario'@'localhost' IDENTIFIED BY 'miclave';
Nota:
Después del @ nosotros indicamos el contexto del usuario, en los ejemplos anteriores todos los usuarios podrán conectarse solo por la maquina local (localhost), es decir, que se impedirá conectarse de forma remota. Si queremos que se conecte el usuario desde cualquier equipo tendra que agregar el caracter %.
mysql> GRANT ALL ON mibase.* TO 'usuario'@'%' IDENTIFIED BY 'miclave';
ELIMINAR USUARIOS

Para eliminar usuarios utiliza el comando DROP USER, para utilizar este comando debe tener el permiso global de CREATE USER o el permiso DELETE para la base de datos mysql. Para borrar una cuenta y sus permisos la sintaxis es la siguiente:

mysql> DROP USER miusuario;

Si tiene el mismo usuario en diferentes ámbitos, solo necesitara especificar el usuario deseado en el ámbito correcto:

mysql> DROP USER miusuario@localhost;

NOTA:
En MySQL 5.0.0 DROP USER solo borra cuentas que no tienen permisos, para eliminar completamente la cuenta incluyendo sus permisos en estas versiones, tendrá que usar SHOW GRANTS para ver que permisos tiene ese usuario y con REVOKE tendrá que revocar sus permisos. A partir de MYSQL 5.0.2 ya se pueden eliminar cuentas que tienen permisos.

PERMISOS

PermisoSignificado
ALLDa todos los permisos simples, excepto GRANT OPTION
ALTERPermite el uso de ALTER TABLE
CREATEPermite el uso de CREATE TABLE
CREATE USERPermite el uso de CREATE USER, DROP USER, RENAME USER y REVOKE ALL PRIVILEGES
CREATE VIEWPermite el uso de CREATE VIEW
DELETEPermite el uso de DELETE
DROPPermite el uso de DROP TABLE
INSERTPermite el uso de INSERT
SELECTPermite el uso de SELECT
UPDATEPermite el uso de UPDATE
GRANT OPTIONPermite dar privilegios

Entradas Populares