Showing posts with label DB. Show all posts
Showing posts with label DB. Show all posts

Wednesday, May 21, 2014

Mensaje de error que nos puede esperar mientras levantamos alguna aplicación web que haga uso de una BD, y hacerla así una más en nuestros servicios.

En mi caso, durante el intento de Instalación de mi Aplicación usando MariaDB, el error:
Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in /srv/http/applicationname/install/fileconfig.php on line NUM

Línea NUM del Archivo:
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
NUM, es el número de línea donde nos marque el pequeño error.

Recurrimos a modificar el archivo:
# vim /etc/php/php.ini
Contenido inicial:
...
extension=openssl.so
;extension=pdo_mysql.so
;extension=pdo_odbc.so
...
Contenido Actualizado:
...
;extension=openssl.so
extension=pdo_mysql.so //descomentamos la linea
;extension=pdo_odbc.so
...

Reiniciamos Apache
# systemctl restart httpd

Ahora sí, Reiniciamos la instalación de la aplicación, y todo debe seguir sin problemas.

De:
http://stackoverflow.com/questions/2424343/undefined-class-constant-mysql-attr-init-command-with-pdo/6735730#6735730

Saturday, October 26, 2013

Reparando PostgreSQL: Job for postgresql.service failed

"Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details."

La solución a éste problema se salva con dos pasos. El primer paso es ejecutar una linea en Terminal como fué definida durante la Instalacion de PostgreSQL con las particularidades de Arch Linux.

Reasignamos el PGROOT directory
# chown -R postgres:postgres /var/lib/postgres/
Durante la instalacion antes del argumento -R, se pasaba un -c, ahora no es necesario.

Borramos el archivo 'postmaster.pid'
# cd /var/lib/postgres/data/
# ls
# rm postmaster.pid

Con éso es seguro que podemos iniciar el Servicio de PostgreSQL sin problema alguno.
Start PostgreSQL
# systemctl start postgresql
---- Podremos no ver algún mensaje en pantalla, por lo que solicito el Status

Status PostgreSQL
# systemctl status postgresql
---- Tengo el Log de la operacion  actual con PostgreSQL

De no hacer esto, e intento arreglarlo con un comando extra no necesario, pero publicado así en algunos blogs, obtendremos un mensaje parecido a:
# su - postgres
$ initdb -D '/var/lib/postgres/data'
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

initdb: directory "/var/lib/postgres/data" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/var/lib/postgres/data" or run initdb

Quedo a sus comentarios por si podemos mejorar éste método.

Basado en:
https://bbs.archlinux.org/viewtopic.php?pid=1182956#p1182956

Tuesday, August 27, 2013

No solo es posible acceder al monitor instalado localmente, sino que también puedo acceder a un host remoto que esté a mi alcance. Lo cuál hacemos con:

$ mysql -h host -u user -p nombrebd
Enter password: ********

Nótese que despues de -p es el nombre de la BD, mas no el password del Usuario, y que el host puede ser un nombre o la direccion IP remota.

Espero les sirva en algún momento.

Para mas información visitar:
https://mariadb.org/

Agregar restricciones de Acceso en MariaDB

En un post anterior vimos como instalar MariaDB, por lo que nos hace falta añadir la autenticacion para seguridad de nuestra BD. Recién instalado MariaDB, no contamos con alguna cuenta de acceso configurada al Monitor.

Para entrar al monitor solo indico:
$ mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.32-MariaDB-log Source distribution
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
# El usuario indicado en el comando es root para poder asignar los permisos necesarios.

Ya dentro resta definir éstos permisos al usuario root, indicando:
]> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'passwd';
]> flush privileges;
]> GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'passwd';
]> flush privileges;
]> exit
# Abandonamos el monitor para acceder con la cuenta recién configurada

Intentamos entrar de nueva forma como se indico en el paso anterior:
$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# Sin embargo ya no es posible acceder con solo el nombre de usuario

Ahora ya es necesario indicar el User y Password
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 5.5.32-MariaDB-log Source distribution
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

Concluida esta configuracion, puedo crear Nuevas Base de Datos, y asignarle acceso a las mismas a Nuevos Usuarios, y de éste modo ya contamos con el acceso restringido en nuestro Monitor de MariaDB.

Espero les sirva en algún momento.

Para mas información visitar:
https://mariadb.org/

Friday, August 16, 2013

Instalar MariaDB en Manjaro Linux

Para instalar MariaDB considerando que no se tiene instalado mysql, lo hacemos de la forma:
~]# pacman -Sy mysql
:: There are 2 providers available for mysql:
:: Repository extra
   1) mariadb
:: Repository community
   2) percona-server

Los repositorios han sido ahora integrados por default con MariaDB, y le han dicho hasta luego a MySQL. Por lo que seleccionamos la opcion de mariadb, o simplemente dejamos  continuar la instalacion:
Enter a number (default=1):
Packages (3): libmariadbclient-5.5.32-1  mariadb-clients-5.5.32-1
              mariadb-5.5.32-1
:: Proceed with installation? [Y/n] y
Con esto tendremos ya instalado nuestro monitor con MariaDB.

Para poder acceder al monitor basta con solo indicar
~]$ mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.32-MariaDB-log Source distribution
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

Pero necesitariamos añadir una restricción a la autenticacion del Monitor, por lo que nos hace falta a éste Usuario y su Passwd respectivamente, asunto que abordamos en el siguiente post.

Monday, July 29, 2013

Instalar PostgreSQL en Manjaro Linux

Iniciamos con
# pacman -Sy postgresql
# pacman -Sy pgadmin3

Creamos el directorio de datos, ruta que buscará la variable PGROOT definida inicialmente en el Archivo de Configuración de Postgres. Si cuentas con la versión 0.8.8 de Manjaro, omite éste paso, en ésta versión si se crea durante la instalación.
# mkdir /var/lib/postgres/data

Asignamos permisos de Propietario sobre el directorio /var/lib/postgres al usuario postgres:
# chown -c -R postgres:postgres /var/lib/postgres

El usuario postgres debe iniciar la Base de Datos como:
# su - postgres
$ initdb -D '/var/lib/postgres/data'

Antes de iniciar el Server decidimos añadir la configuracion para que pueda ser accedida desde Host Remotos, Primero debemos modificar el archivo postgresql.conf, entrar a /var/lib/postgres/data/:
$ vim postgresql.conf

Buscamos la linea:
#listen_addresses = 'localhost'
y la cambiamos por:
listen_addresses = '*'
También buscamos la siguiente linea:
#password_encryption = on
y la cambiamos por:
password_encryption = on

Ahora debemos modificar el archivo “pg_hba.conf”
$ vim pg_hba.conf

Modificamos la linea
# "local" is for Unix domain socket connections only
local   all         all                               ident
por
# "local" is for Unix domain socket connections only
local   all         all                               md5
Esto lo hacemos para usar autentificación md5 con el usuario postgres. Salimos de la sesión con postgres:
$ exit

Para iniciar PostgreSQL realizamos:
# systemctl start postgresql

Lo siguiente es cambiar la contraseña del usuario administrador de PostreSQL del Sistema:
# passwd postgres

Ahora debemos cambiar la contraseña del usuario postgres en el motor, para ello primero entramos con la siguiente linea
# sudo su postgres -c "psql template1"
y luego ingresamos el siguiente comando
ALTER USER postgres WITH PASSWORD 'contraseña'
Finalmente para salir de postgres, ingresamos el siguiente comando:
\q

Por no dejar reiniciamos el Server
# systemctl restart postgresql

Una última opcion es añadir el Servicio de PostgreSQL a la lista de demonios que se inician con el Sistema con:
# systemctl enable postgresql

Armamos estos pasos con la ayuda de la Wiki de Arch

Wednesday, March 6, 2013

Archivos de Configuración de Base de Datos para Java

Configuración de Base de Datos para su trabajo con Java, dejo los requerimientos básicos para 3 Gestores PostgreSQL, SQL Server y MySQL.

-- PostgreSQL --

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/nombrebd</property>
    <property name="hibernate.connection.username">user</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
  </session-factory>
</hibernate-configuration>


-- SQL Server --

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;databaseName=nombrebd</property>
    <property name="hibernate.connection.username">user</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
  </session-factory>
</hibernate-configuration>


-- MYSQL --

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/nombrebd</property>
    <property name="hibernate.connection.username">user</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
  </session-factory>
</hibernate-configuration>

Wednesday, February 6, 2013

Install PostgreSQL 9.2 on Fedora 19 y 18

Note: If you are upgrading PostgresSQL (from earlier version), then make sure that you backup (dump and copy) your database and configs.


Install PostgreSQL 9.2.1 Database Server on Fedora 18
 
Change root user
su -

Exclude Fedora own PostgreSQL Packages
Add exclude to /etc/yum.repos.d/fedora.repo file [fedora] section:
[fedora]
...
exclude=postgresql*

Add exclude to /etc/yum.repos.d/fedora-updates.repo file [updates] section:
[updates]
...
exclude=postgresql*

Install PostgreSQL 9.2 Repository
rpm -Uvh http://yum.postgresql.org/9.2/fedora/fedora-18-x86_64/pgdg-fedora92-9.2-6.noarch.rpm

Para Fedora 19
rpm -Uvh http://yum.postgresql.org/9.2/fedora/fedora-19-x86_64/pgdg-fedora92-9.2-6.noarch.rpm

Ésta es una forma de llamar el comando, pero se puede personalizar segun sean las caracteristicas de su Sistema Operativo y Arquitectura, obteniendo la información de: http://yum.postgresql.org/9.2/fedora/

Install PostgreSQL 9.2 with YUM
yum install postgresql postgresql-server postgresql-contrib


Configure PostgreSQL 9.2

Initialize Cluster with initdb Command
Here is multiple alternatives howto do this (like service postgresql-9.x initdb, /etc/init.d/postgresql-9.x initdb) and postgresql-setup initdb, so that’s why I use here universal PostgreSQL initdb method, which should work with Fedora 18, CentOS/Red Hat (RHEL)/Scientific Linux (SL) 6.3/5.8:
su - postgres -c /usr/pgsql-9.2/bin/initdb

Set PostgreSQL Server to Listen Addresses and Set Port
Open /var/lib/pgsql/9.2/data/postgresql.conf file, and add/uncomment/modify following:
listen_addresses = '*'
port = 5432

If you want just localhost setup, then use following:
listen_addresses = 'localhost'
port = 5432

Or if you want use specific ip, then use following:
listen_addresses = '192.1.2.33'
port = 5432

Set PostgreSQL Permissions
Modify PostgreSQL /var/lib/pgsql/9.2/data/pg_hba.conf (host-based authentication) file:
# Local networks
host all all xx.xx.xx.xx/xx md5
# Example
host all all 10.20.4.0/24 md5
# Example 2
host test testuser 127.0.0.1/32 md5

Modify PostgreSQL /var/lib/pgsql/9.2/data/pg_hba.conf (host-based authentication) file:
# Local networks
host all all xx.xx.xx.xx/xx md5
# Example
host all all 10.20.4.0/24 md5
# Example 2
host test testuser 127.0.0.1/32 md5

You can find more examples and full guide from PostgreSQL pg_hba.conf manual -> http://www.postgresql.org/docs/9.2/static/auth-pg-hba-conf.html


Start PostgreSQL Server and Autostart PostgreSQL on Boot

Despues del siguiente bloque, veremos llamar a postgresql-9.2.service pero ¿De donde obtenemos el nombre del servicio?, para obtenerlo acceder a la siguiente direccion:
]# pwd
/usr/lib/systemd/system
]# ls pos*
postgresql-9.2.service

Entonces ejecutar:
## Start PostgreSQL 9.2 ##
systemctl start postgresql-9.2.service

## Start PostgreSQL 9.2 on every boot ##
systemctl enable postgresql-9.2.service

Create Test Database and Create New User
Change to postgres user
su postgres

Create test database (as postgres user)
createdb test

Login test database (as postgres user)
psql test

Create New “testuser” Role with Superuser and Password
CREATE ROLE testuser WITH SUPERUSER LOGIN PASSWORD 'test';

Test Connection from localhost (as Normal Linux User)
psql -h localhost -U testuser test

De ésto modo ya tengo instalado PostgreSQL, pero necesito de una herramienta gráfica, por lo que recurro a instalar:
yum -y install pgadmin3

Aquí una imagen ya de nuestro gestor instalado.

Monday, February 4, 2013

Abordaremos un modo de llevar a cabo una Cardinalidad en Tablas de Muchos a Muchos, pero con la diferencia de poder añadir campos en extra a ésta Relación en Hibernate, cosa que no es permitido si se indica a través de anotaciones usando Hibernate.

Pronto será publicado, esa y otras pequeñas curiosidades usando Java y Hibernate.