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

miércoles, 6 de julio de 2016

Curso MySQL – Tipos de Datos de Fecha y Hora

En este Curso MySQL hablaremos de los tipos de datos que nos permiten representar valores de tiempo. Los campos de datos para fecha y hora son de uso habitual y MySQL nos ofrece los siguientes tipos: DATE, TIME, DATETIME, TIMESTAMP y YEAR. Cada uno de estos tipos de datos cuentan con un rango de valores aceptados, así como el valor “cero” que es establecido automáticamente cuando se especifica un valor erróneo que MySQL no puede representar.
Es necesario conocer las siguientes consideraciones generales cuando se trabaja tipos de datos de tiempo:
  • MySQL obtiene los valores para una fecha u hora dado en un formato estándar de salida, por el contrario al momento de introducir valores intenta con una gran variedad de formatos en pos de interpretar correctamente los datos insertados.
  • A pesar de que MySQL intenta interpretar los valores en varios formatos, las fechas siempre deben declararse en el orden año-mes-día (por ejemplo: 2015-04-23 o 98-08-15).
  • Las fechas que contienen dos dígitos en el segmento del año, como en el ejemplo anterior, generan ambigüedad ya que no conocemos el siglo al que pertenece. Por esta razón MySQL se guía por la siguiente regla a la hora de interpretar este formato:
    • Años especificados en los rangos 70-99 son convertidos a 1970-1999.
    • Años especificados en los rangos 00-69 son convertidos a 2000-2069.
  • En el punto anterior y específicamente con la regla que usa MySQL para interpretar los años especificados con dos dígitos, nos surge una duda. ¿Cómo representar con dos dígitos fechas anteriores a 1970 y posteriores a 2069? Con respecto a esto no he encontrado referencias por lo que asumo que habría que especificar el años en su valor numérico completo.
  • Hasta cierto punto uno puede convertir un valor de tiempo en otro. No obstante puede que en ocasiones ocurran alteraciones en los datos y pérdida de información en estas operaciones. En todos los casos la conversión entre valores de fecha o tiempo a otros tipos de datos similares está sujeto a los rangos de valores aceptados por el tipo de dato final. Por ejemplo, aunque los valores de los tipos de datos DATE, DATETIME y TIMESTAMP se pueden especificar usando el mismo formato, estos tipos de datos no comparten los mismos rangos de valores. TIMESTAMP no acepta valores anteriores a 1970 UTC o posteriores a “2038-01-19 03:14:07” UTC. Esto significa que fechas como “1968-01-01”, siendo válidas para los tipos de datos como DATE y DATETIME, no lo son con TIMESTAMP y son convertidas a “0″ por MySQL.
  • MySQL permite fechas donde día o mes y día sean cero en columnas de tipo DATE o DATETIME. Esto puede ser útil en casos donde se desea almacenar fechas que pudiéramos no conocer del todo. En estos caso serían válidos los siguientes valores “2015-00-00” o “2015-01-00”. Si se decide manejar fechas en este formato no podemos esperar resultaos correctos de funciones como DATE_SUB() o DATE_ADD() que requieren de fechas completas. Para prohibir el uso de esta característica debemos de habilitar el modo Strict SQL a partir de la versión MySQL 5.7.4 o el modo NO_ZERO_IN_DATE para versiones anteriores a esta.
Descripción de los tipos de datos para fecha y hora:
Importante recordar que donde quiera que veamos [ … ] esto quiere decir que todo cuanto engloba es un parámetro opcional, en el caso de < … > es todo lo contrario, es un parámetro obligatorio y que de omitirlo seguramente obtendremos un error de sintaxis.

DATE

Permite declarar fechas en los rangos de “1000-01-01” a “9999-12-31”. MySQL muestra los valores de tipo DATE en el formato “YYYY-MM-DD” y permite la asignación usando tanto cadenas de texto como números.
Ejemplo:

 DATETIME  [ ( fsp ) ]

Permite declarar fecha y hora. Rangos válidos de “1000-01-01 00:00:00.000000” a “9999-12-31 23:59:59.999999”. MySQL muestra los valores de tipo DATETIME en el formato “YYYY-MM-DD HH:MM:SS[fracción]” y permite la asignación usando tanto cadenas de texto como números.
El valor opcional fsp en los rangos de 0 a 6 puede ser establecido en pos de especificar la precisión fraccionaria de los segundos. Un valor de cero significa que no hay parte fraccionaria. Si este valor es omitido la precisión por defecto es de cero.
La inicialización y actualización automática de columnas de tipo DATETIME con la fecha y hora actual puede especificarse usando las cláusulas DEFAULT y ON UPDATE.
Ejemplo:
En este ejemplo establecemos en nuestra tabla imaginaria de record mundiales una columna con la fecha y hora exacta de este suceso, especificando una precisión de 4 dígitos para los milisegundos, ya que 1 segundo = 1000 milisegundos, de esta manera podremos distinguir con más exactitud cual de nuestros deportistas realmente ha ganado el título en caso de tener resultados finales muy aproximados.

TIMESTAMP  [ ( fsp ) ]

Permite declarar un momento en el tiempo, una marca de tiempo que almacena los valores como la cantidad de segundos desde Epoch (“1970-01-01 00:00:00” UTC). Un campo TIMESTAMP no puede representar el valor “1970-01-01 00:00:00” debido a que sería equivalente a cero segundos desde Epoch y el valor cero está reservado por MySQL.
El valor opcional fsp en los rangos de 0 a 6 puede ser establecido en pos de especificar la precisión fraccionaria de los segundos. Un valor de cero significa que no hay parte fraccionaria. Si este valor es omitido la precisión por defecto es de cero.
A no ser de que se especifique lo contrario, la primera columna de tipo TIMESTAMP por defecto se establece el valor de fecha y hora de la última vez que fue actualizada la tabla donde se encuentra esta columna y siempre que no se le asigne explícitamente un valor. Esto hace al tipo de dato TIMESTAMP muy útil cuando se quiere conocer la marca de tiempo de la ultima vez que se efectuó una operación INSERT o UPDATE. También se puede establecer una columna de tipo TIMESTAMP a la fecha y hora actual si se le asigna NULL como valor, siempre y cuando no se haya establecido la columna como NOT NULL.
La inicialización y actualización automática de columnas de tipo TIMESTAMP con la fecha y hora actual puede especificarse usando las cláusulas DEFAULT CURRENT_TIMESTAMP o ON UPDATE CURRENT_TIMESTAMP.
Ejemplo:

 TIME  [ ( fsp ) ]

El tipo de dato TIME nos permite almacenar una hora en los rangos de “-838:59:59.000000” a “838:59:59.000000”. MySQL muestra los valores de tipo TIME en el formato “HH-MM-SS[fracción]” y permite la asignación usando tanto cadenas de texto como números.
El valor opcional fsp en los rangos de 0 a 6 puede ser establecido en pos de especificar la precisión fraccionaria de los segundos. Un valor de cero significa que no hay parte fraccionaria. Si este valor es omitido la precisión por defecto es de cero.
Ejemplo:

 YEAR  [ ( 4 ) ]

Permite declarar un año en formato de 4 dígitos. MySQL muestra los valores de tipo YEAR en el formato “YYYY”, es decir valores como 1998, 2015 y 0000, y permite la asignación usando tanto cadenas de texto como números.
Ejemplo:
Requerimientos de almacenamiento para cada tipo:
Tipo de DatoTamaño requerido antes de MySQL 5.6.4Tamaño requerido a partir de MySQL 5.6.4
YEAR1 byte1 byte
DATE3 bytes3 bytes
TIME3 bytes3 bytes + almacenamiento fraccionario de los segundos
DATETIME8 bytes5 bytes + almacenamiento fraccionario de los segundos
TIMESTAMP4 bytes4 bytes + almacenamiento fraccionario de los segundos
En próximos artículos se verán ejemplos prácticos.
Espero que todo cuanto se ha dicho aquí, de una forma u otra le haya servido de aprendizaje, de referencia, que haya valido su preciado tiempo.
Este artículo, al igual que el resto, será revisado con cierta frecuencia en pos de mantener un contenido de calidad y actualizado.
Cualquier sugerencia, ya sea errores a corregir, información o ejemplos a añadir será, más que bienvenida, necesaria!
Fuente:
http://www.wiseratel.com/curso-mysql-tipos-de-datos-de-fecha-y-hora/

miércoles, 9 de marzo de 2016

Unable to access MySQL after it automatically generated a temporary password

Si olvidaste el password de tu mysql en tu Mac OS X.

Have you forgotten your Mac OS X 'ROOT' password and need to reset it? Follow these 4 simple steps:

1. Stop the mysqld server. Typically this can be done by from 'System Prefrences' > MySQL > 'Stop MySQL Server'

2. Start the server in safe mode with privilege bypass

From a terminal:

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

3. In a new terminal window:

sudo /usr/local/mysql/bin/mysql -u root

UPDATE user SET password_expired = 'N' WHERE User = 'root';

UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N';


FLUSH PRIVILEGES;

\q

4. Stop the mysqld server again and restart it in normal mode.

miércoles, 3 de junio de 2015

Persistence.xml y servidor mysql

Once GlassFish is installed, make sure it can access MySQL Connector/J. To do this, copy the MySQL Connector/J jar file to the domain-dir/lib directory. For example, copy mysql-connector-java-5.1.30-bin.jar toC:\glassfish-install-path\domains\domain-name\lib. Restart the GlassFish Application Server. For more information, see Integrating the JDBC Driver in GlassFish Server Open Source Edition Administration Guide, available at GlassFish Server Documentation.
You are now ready to create JDBC Connection Pools and JDBC Resources.
Creating a Connection Pool
  1. In the GlassFish Administration Console, using the navigation tree navigate to ResourcesJDBCConnection Pools.
  2. In the JDBC Connection Pools frame click New. You will enter a two step wizard.
  3. In the Name field under General Settings enter the name for the connection pool, for example enter MySQLConnPool.
  4. In the Resource Type field, select javax.sql.DataSource from the drop-down listbox.
  5. In the Database Vendor field, select MySQL from the drop-down listbox. Click Next to go to the next page of the wizard.
  6. You can accept the default settings for General Settings, Pool Settings and Transactions for this example. Scroll down to Additional Properties.
  7. In Additional Properties you will need to ensure the following properties are set:
    • ServerName - The server to connect to. For local testing this will be localhost.
    • User - The user name with which to connect to MySQL.
    • Password - The corresponding password for the user.
    • DatabaseName - The database to connect to, for example the sample MySQL database World.
  8. Click Finish to exit the wizard. You will be taken to the JDBC Connection Pools page where all current connection pools, including the one you just created, will be displayed.
  9. In the JDBC Connection Pools frame click on the connection pool you just created. Here, you can review and edit information about the connection pool. Because Connector/J does not support optimized validation queries, go to the Advanced tab, and under Connection Validation, configure the following settings:
    • Connection Validation - select Required.
    • Validation Method - select table from the drop-down menu.
    • Table Name - enter DUAL.
  10. To test your connection pool click the Ping button at the top of the frame. A message will be displayed confirming correct operation or otherwise. If an error message is received recheck the previous steps, and ensure that MySQL Connector/J has been correctly copied into the previously specified location.
Now that you have created a connection pool you will also need to create a JDBC Resource (data source) for use by your application.
Creating a JDBC Resource
Your Java application will usually reference a data source object to establish a connection with the database. This needs to be created first using the following procedure.
  • Using the navigation tree in the GlassFish Administration Console, navigate to ResourcesJDBCJDBC Resources. A list of resources will be displayed in the JDBC Resources frame.
  • Click New. The New JDBC Resource frame will be displayed.
  • In the JNDI Name field, enter the JNDI name that will be used to access this resource, for example enter jdbc/MySQLDataSource.
  • In the Pool Name field, select a connection pool you want this resource to use from the drop-down listbox.
  • Optionally, you can enter a description into the Description field.
  • Additional properties can be added if required.
  • Click OK to create the new JDBC resource. The JDBC Resources frame will list all available JDBC Resources.

martes, 26 de agosto de 2014

Install Apache2, PHP5 And MySQL Support On CentOS 6.5 (LAMP)

Version 1.0
Authors: Till Brehm <t [dot] brehm [at] howtoforge [dot] com>, Falko Timme <ft [at] falkotimme [dot] com>
 Follow Howtoforge on Twitter
Last edited 04/03/2014
There is a new version of this tutorial available for CentOS 7.
LAMP is short for Linux, Apache, MySQL, PHP. This tutorial shows how you can install an Apache2 webserver on a CentOS 6.4 server with PHP5 support (mod_php) and MySQL support.
I do not issue any guarantee that this will work for you!

1 Preliminary Note

In this tutorial I use the hostname server1.example.com with the IP address 192.168.0.100. These settings might differ for you, so you have to replace them where appropriate.

2 Installing MySQL 5

To install MySQL, we do this:
yum -y install mysql mysql-server
Then we create the system startup links for MySQL (so that MySQL starts automatically whenever the system boots) and start the MySQL server:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
Set passwords for the MySQL root account:
mysql_secure_installation
[root@server1 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] <-- ENTER
New password: <-- yourrootsqlpassword
Re-enter new password: <-- yourrootsqlpassword
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <-- ENTER
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <-- ENTER
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <-- ENTER
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <-- ENTER
... Success!
Cleaning up...

All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!

3 Installing Apache2

Apache2 is available as a CentOS package, therefore we can install it like this:
yum -y install httpd
Now configure your system to start Apache at boot time...
chkconfig --levels 235 httpd on
... and start Apache:
/etc/init.d/httpd start
Now direct your browser to http://192.168.0.100, and you should see the Apache2 placeholder page:
Click to enlarge
Apache's default document root is /var/www/html on CentOS, and the configuration file is /etc/httpd/conf/httpd.conf. Additional configurations are stored in the /etc/httpd/conf.d/ directory.

4 Installing PHP5

We can install PHP5 and the Apache PHP5 module as follows:
yum -y install php
We must restart Apache afterwards:
/etc/init.d/httpd restart

5 Testing PHP5 / Getting Details About Your PHP5 Installation

The document root of the default web site is /var/www/html. We will now create a small PHP file (info.php) in that directory and call it in a browser. The file will display lots of useful details about our PHP installation, such as the installed PHP version.
vi /var/www/html/info.php
<?php
phpinfo();
?>
Now we call that file in a browser (e.g. http://192.168.0.100/info.php):
Click to enlarge
As you see, PHP5 is working, and it's working through the Apache 2.0 Handler, as shown in the Server API line. If you scroll further down, you will see all modules that are already enabled in PHP5. MySQL is not listed there which means we don't have MySQL support in PHP5 yet.

6 Getting MySQL Support In PHP5

To get MySQL support in PHP, we can install the php-mysql package. It's a good idea to install some other PHP5 modules as well as you might need them for your applications. You can search for available PHP5 modules like this:
yum search php
Pick the ones you need and install them like this:
yum -y install php-mysql
In the next step I will install some common PHP modules that are required by CMS Systems like Wordpress, Joomla and Drupal:
yum -y install php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel
APC is a free and open PHP opcode cacher for caching and optimizing PHP intermediate code. It's similar to other PHP opcode cachers, such as eAccelerator and Xcache. It is strongly recommended to have one of these installed to speed up your PHP page.
APC can be installed as follows:
yum -y install php-pecl-apc
Now restart Apache2:
/etc/init.d/httpd restart
Now reload http://192.168.0.100/info.php in your browser and scroll down to the modules section again. You should now find lots of new modules there, including the APC module:
Click to enlarge

7 phpMyAdmin

phpMyAdmin is a web interface through which you can manage your MySQL databases.
First we enable the RPMforge repository on our CentOS system as phpMyAdmin is not available in the official CentOS 6.5 repositories:
Import the RPMforge GPG key:
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
On x86_64 systems:
yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
On i386 systems:
yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
phpMyAdmin can now be installed as follows:
yum -y install phpmyadmin
Now we configure phpMyAdmin. We change the Apache configuration so that phpMyAdmin allows connections not just from localhost (by commenting out the <Directory "/usr/share/phpmyadmin"> stanza):
vi /etc/httpd/conf.d/phpmyadmin.conf
#
#  Web application to manage MySQL
#

#<Directory "/usr/share/phpmyadmin">
#  Order Deny,Allow
#  Deny from all
#  Allow from 127.0.0.1
#</Directory>

Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin
Next we change the authentication in phpMyAdmin from cookie to http:
vi /usr/share/phpmyadmin/config.inc.php
[...]
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]
Restart Apache:
/etc/init.d/httpd restart
Afterwards, you can access phpMyAdmin under http://192.168.0.100/phpmyadmin/:

Fuente:
http://www.howtoforge.com/apache_php_mysql_on_centos_6.5_lamp