Archivio

Posts Tagged ‘mysql’

Mysql contro Postgresql

postgresql

MySQL e PostgreSQL sono i due database relazionali  open source più  utilizzati e 

mysqllogo

conosciuti. Lo sviluppo iniziale dei due database ha avuto obiettivi diversi. Mysql ha privilegiato la velocità, l’essenzialità mentre Postgresql l’aderenza agli standard e la completezza rendendo disponibili  diverse funzionalità anche se al prezzo di performance inferiori. Ancora per postgresql si affermava che gli sviluppatori di postgresql erano animati dall’obiettivo di portare in ambito open-source un database con l’impostazione dei database di Oracle ( “open-source” Oracle) . Grazie alla velocità e all’essenzialità, che in alcuni ambiti diventà semplicità, Mysql storicamente è stata la prima scelta nelle applicazioni web appoggiate a database.  Non va trascurato poi che Mysql è entrato nella “scuderia” Oracle.

Nel tempo la situazione si è andata modificando ed oggi i due prodotti stanno in qualche modo convergendo nel senso che le prestazioni di Postgresql sono decisamente migliorate mentre Mysql si è aricchito di funzioni. MySQL ( oggi alla versione 5.6)  rimane comunque il più utilizzato e se una volta lo era per la velocità e la praticità ora lo è per l’ampio numero di progetti in cui è estrato a far parte. Infatti quasi tutte le web application si basano o prevedono la possibilità di scelta di MySQL come database. PostreSQL ( oggi alla versione 9.3.1)  dal canto suo offre comunque una protezione dei dati superiore grazie al rispetto degli standard cosa che non accade con MySQL. Per gli sviluppatori di postgresql affidabilità e integrità dei dati rimangono un obiettivo irrinunciabile.

Architettura

Per quanto riguarda il funzionamento MySQL dispone di un strato SQL mentre può utilizzare più engine dati. Ad esempio il motore di archiviazione myISAM  può essere scelto per situazioni con  maggiore concorrenza in lettura e che non richiedono proprietà ACID. InnoDB per avere il supporto ACID anche se non completo.  Invece Postgresql è un database server unificato con un unico  motore di archiviazione.

Al momento gli elementi distintivi che più contraddistinguono i due e che vanno valutati nella scelta di un database SQL opensource sono l’aderenza agli standard SQL, la conformità ACID e la necessità di usare una piattaforma LAMP. Come affermato in premessa l’aderenza alla normativa ISO è sempre stata un tratto distintivo di postgresql. Quindi se si ha la necessità di sviluppare un progetto che abbia questa caratteristica postgresql diventa la prima scelta.

Porting

Se si desidera la possibilità di trasferimento (porting) del progetto, perchè è cresciuto molto, su database Oracle. Postgresql, rispettando  gli standard ISO per SQL, rende il passaggio sufficentemente agevole. Con MySQL questo non sarà possibile poichè non é conforme agli standard ISO e non segue l’impostazione ACID  Atomicità, Coerenza, Isolamento e Durabilità sono le proprietà logiche che devono contraddistinguere le transazioni) . Nel caso di MySQL il trasferiemento può richiedere una pesante riscrittura del progetto. LAMP e Riutilizzo del Codice Molti progetti girano sul LAMP (Linux, Apache, MySQL, PHP/Pearl/Python) web applications come WordPress, Joomla, Mediawiki, …. si appoggiano preferibilmente su MySQL. Molte di queste applicazioni non prevedono la possibilità di utilizzare postgresql pertanto la scelta operata a questo livello condiziona la scelta del database. Per quanto riguarda la possibilità di riutilizzo di codice va evidenziato che esiste molto più materiale, codice a disposizione per MySQL che per postresql proprio per l’ampia dissusione dello stesso nelle web applicaiton. Risorse:

Per un confronto più articolato : MySQL vs PostgreSQL – WikiVS

Nel blog:

Risorse:

Trasferire o copiare un blog wordpress 3.5 in altro server

marzo 27, 2013 8 commenti

wordpress-logo-sObiettivo: trasferire e/o copiare  un blog wordpress  da un server in altro server.  Il trasferimento può far comodo anche per avere una copia in locale del blog.  Per poter effettuare l’operazione  è necessario l’accesso ai MySQL e alle cartelle delle web application nei  servers conivolti nel trasferimento. Se non si dispongono dei dati di accesso non resta che far ricorso al plugin per l’esportazione con i limiti del caso.  La versione di WordPress presa in considerazione è la 3.5.1. I servers utilizzati possono essere sia Linux che Windows. Per quanto riguarda i databases MySQL è sufficiente che la versione sia 5.0 o successive. Un’articolata discussione di tutte le situazioni che si possono presentare quando si deve spostare un blog wordpress si trova nel seguente post Moving WordPress « WordPress Codex.

Di seguito l’esemplificazione, talvolta anche passo passo, delle operazioni da compiere per copiare ad esempio il blog maurizio.siagri.net su server locale ubuntu 12.04 virtuale ip 192.168.7.162.

1) Accedere alla cartella contenente l’applicazione WordPress da trasferire e copiarla nel nuovo server. A seconda delle connessioni da remoto supportate dal server sorgente si possono utilizzare una molteplicità di modalità di accesso per il trasferimento:  ftp, webdav, sftp. smb, vpn …

Nel caso specifico copiamo la cartella di wordpress del server di origine da

/maurizio  (server origine )  
in ---->  
/var/www/maurizio  ( server target locale ubuntu )

2) Sistemare i  permessi delle cartelle per l’esecuzione dell’applicazione da parte del web server apache2 presente nella macchina ubuntu locale.

chown www-data:www-data -R /www/var/maurizio

3)  Effettuata la copia delle cartelle si deve copiare il database.

Per ottenere le informazioni relative al database  visualizzare il file wp-config.php  si potranno visualizzare il nome del database, DB_NAME,  il nome del proprietario del database, DB_USER,  la password usata dal DB_USER,  DB_PASSWORD .

 
 * @package WordPress
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'dbwp_name');

/** MySQL database username */
define('DB_USER', 'user_dbwp');

/** MySQL database password */
define('DB_PASSWORD', 'pass_user_dbwp');

/** MySQL hostname */
define('DB_HOST', 'hostname');

4) Effettuare il dump del database MySQL, del blog da trasferire, utilizzando i dati di accesso del file wp-config.php  con un comando dle tipo .

$ mysqldump -u user_dbwp --password=pass_user_dbwp -h host_wp_remoto dbwp_name > dbwp_name.sql

5) Caricare il dump del database nel nuovo server MySQL della macchina ubuntu locale:

Accedere al nuovo server Mysql con:

$ mysql -u root -h host -p

creare il nuovo database e lo user_dbwp con:

mysql> CREATE DATABASE dbwp_name;
mysql> GRANT ALL PRIVILEGES ON dbwp_name.* TO 'user_dbwp'@'localhost'
mysql> IDENTIFIED BY 'pass_user_dbwp' ;
mysql> FLUSH PRIVILEGES ;

caricare il database con :

$ mysql -u user_dbwp --password=pass_user_dbwp  -h host dbwp_name < dbwp_name.sql

6) Adesso è possbile avviare però i risultati saranno “stravaganti “e non sarà possbile navigare. Infatti si rende necessario sostituire almeno i nomi di dominio ed eventualmente gli urls.

Sostituzione del nome di dominio
In questo caso è necessario procedere alla ricerca dei vecchi valori,  sostituendoli con i nuovi. Per fare questo la soluzione ottimale consiste nell’utilizzare lo script scaricabile al seguente indirzzo Search and Replace for WordPress Databases Script. Lo script consente una sostituzioni sicura dei dati preservando l’integrità della lunghezza delle stringhe serializzate. Il codice funziona per qualsiasi piattaforma che memorizza array PHP serializzati in un database MySQL: Drupal Joomla. ATTENZIONE Lo script rappesenta un punto di vulnerabilità. Pertanto é bene usarlo rinominato e rimuoverlo dopo il suo utilizzo.

Possiamo anche scaricare e rendere disponibile lo script Download Search Replace DB v 2.1.0 con:

$ wget http://www.interconnectit.com/wp-content/uploads/2011/05/searchreplacedb21.zip
$ unzip searchreplacedb21.zip
$ cp    searchreplacedb21.php  /var/www/maurizio/_sr21.php 
$ chown www-data:www-data maurizio

Avviare  lo scripts facendo puntare il browser allo scipt stesso 192.168.66.162/maurizio/_sr2.php e seguire le indicazioni a video. Procedere con attenzione e cautela. Nel caso si compiano errori si può ricaricare il dump originale del database e ripetere l’operazione.

wordpress db search e replace

wordpress db search e replace start page

Sostituzione nome dominio maurizio.siagri.net con l’indirizzo locale 192.168.7.162/maurizio

wordpress db sostituzione nome dominio

wordpress db sostituzione nome dominio

Esito del search e replace nel database

wordpress db search and replace results

wordpress dbsearch and replace results

Adesso è possibile avviare il blog in locale http://192.168.7.162/maurizio

wp_blog_copiato

Risorse:

Installare Adminer 3.6.3 in Ubuntu 12.04 server

marzo 16, 2013 1 commento

adminer-logoRilasciata in gennaio la versione 3.6.3 di Adminer una interfaccia di amministrazione per database SQL caratterizzata da pulizia ed efficacia oltre a MySQL, supporta PostgreSQL, SQLite, MS SQL, Oracle. A differenza di phpAdmin consiste in un unico file php.

adminer login postgresql

adminer login postgresql

Disponibile anche Adminer-editor un interfaccia user-friendly e di facile utilizzo per editing dei dati dei database per l’utente finale. Adminer e Adminer editor dispongono di plugins e  skins.

Installare Adminer

Per installare adminer in Ubuntu 12.04 è necessario avere installato mysql-server, apache2 e php. Sono necessari anche i moduli php per i database con i quali si intende interagire. Ad esempio
per amministrare mysql dovrà essere installato il modulo php5-mysql, mentre per postgresql è necessario il modulo php5-pgadmin.

I moduli possono essere installati con

sudo apt-get install php5-mysql php5-pgsql

Creare la directory /usr/share/adminer

sudo  mkdir /usr/share/adminer
sudo  cd /usr/share/adminer

scaricare l’ultima versione di adminer

sudo wget "http://www.adminer.org/latest.php"

creare un link simbolico adminer.php

sudo ln -s latest.php adminer.php

Configurare apache perchè utilizzi adminer utilizzando echo e quindi riavviare apache2

echo "Alias /adminer.php /usr/share/adminer/adminer.php" > /etc/apache2/conf.d/adminer.conf

service apache2 restart

Adminer mysql

Disinstallare Adminer

Per disinstallare adminer  rimuovere la directory /adminer e il suo contenuto

sudo  rm -R /usr/share/adminer

rimuovere anche il file di configurazione apache2 e riavvare il web server

sudo rm /etc/apache2/conf.d/adminer.conf
service apache2 restart

Risorse:

 

Installare MySQL 5.5 in Windows server 2008

mysqllogoMySQL è un database  SQL relazione open soure che ha avuto e ha un grande successo nel mondo internet rappresentando il server SQL di riferimento per molte applicazioni web.

Di seguto la procedura passo passo per installare la versione 5.5.29 Comunity Edition. L’installazione di MySQL in Windows  a partire dal file (.msi) con l’installer window è decisamente amichevole . La versione  con supporto per il mondo aziendale è denominata  Enterprise Edition.

Per installare fare riferimento alla pagina della versione corrente

MySQL :: Download MySQL Installer

oppure alla pagina archivio con tutte le versione precedenti

MySQL :: MySQL Product Archives

mysql 5.5 Windows 2008

mysql 5.5 Windows 2008

Scarichiamo la versione a 64 bit  con installer windows:  mysql-5.5.29-winx64.msi
Microsoft Windows (Windows Installer format) (11 Dec 2012, 32.6M)
Signature MD5: 83a7294e35925623cd3264e0df3667c6

possiamo controllare la Signature MD5 con Fciv Verifica del checksum MD5 in Windows

>fciv   mysql-5.5.29-winx64.msi

continua

Lanciamo l’eseguibile

mysql 5.5 Windows 2008  run

mysql 5.5 Windows 2008 run

mysql 5.5.29 setup Windows 2008 server

mysql 5.5.29 setup Windows 2008 server

Scegliere il tipo di Setup di MySQL. l’opzione standard  è typical

mysq l5.5 setup type  Windows 2008

mysq l5.5 setup type Windows 2008

tradionale warning in fase di installazione

mysql 5.5 tipico warning  in Windows 2008

mysql 5.5 tipico warning in Windows 2008

Il setup mysql termina con uno spot della versione Enterprise

mysql 5.5 enteprise spot

mysql 5.5 enteprise spot

Terminata la fase di setup è  possibile avviare Il wizard per la configurazione di MySQL 5.5 con il check su “Launch th MySQL Instance Configuration Wizard”

mysql 5.5 finish setup e start Configuration Windows2008

mysql 5.5 finish setup e start Configuration Windows2008

Maschera di Welcome del Server Instance Configuration Wizard 1.0.17.0 usato in  MySQL 5.5.29

mysql 5.5 Server Instance Confiugration Wizard

mysql 5.5 Server Instance Confiugration Wizard

esiste in caso di più installazioni Mysql la possibilità di selezionare la versione   da configurare

mysql 5.5 Server Istance Configuration

mysql 5.5 Server Istance Configuration

Sono possibili due tipi di configuratione Detailed e Standard optiamo per la dettagliata:

mysql 5.5 selected a configuration type

mysql 5.5 selected a configuration type

Per la configurazione di Mysql  è possibile optare per tre tipi di server: Macchina di Sviluppo, Macchina Server, Macchina Dedicata per MySQL Server. La scelta influenzerà  memoria, disco e CPU. In Developer Machine verrà utilizzata una minima quantità di memoria. In Server Machine ci sarà un utilizzo medio di memoria. Mentre Dedicated Machine determina un massimo utilizzo di memoria.

mysql 5.5 configuration: Server type

mysql 5.5 configuration: Server type

Selezione di drive e directory utilizzati per i dati

mysql 5.5  InnoDB Tablespace Settings

mysql 5.5 InnoDB Tablespace Settings

MySQL selezionare il numero di connessioni concorrenti previste per il server

mysql 5.5 impostare numero di connessioni concorrenti

mysql 5.5 impostare numero di connessioni concorrenti

Permettere le connessioni TPC/IP e impostare la porta per MySQL quella di default è la 3306. Abilitare lo Strict Model per il server SQL.

mysql 5.5 Set networking option

mysql 5.5 Set networking option

Sono disponibili più character set selezionare il character di default. Il Set di caratteri standard è Latin1  adeguato per l’italiano, l’inglese e i linguaggi dell’Europa dell’ovest in genere. UTF8 è raccomandato per registrare testi in  più linguaggi differenti.  E’ comuque possibile selezionare il set di caratteri desiderato.

mysql 5.5 Selezionare il character set di default

mysql 5.5 Selezionare il character set di default

E’ possibile installare MySQL come un servizio windows scelta raccomandata. E includere il percorso di cartella con  server e client in PATH.

mysql 5.5 Windows options

mysql 5.5 Windows options

Impostare le opzioni di sicurezza quali la password di root che di default è vuota. Si sconsiglia  l’aggiunta di un account anomino.

mysql 5.5 Security Options

mysql 5.5 Security Options

Terminata l’impostazione dei parametri di configurazione grazie al wizard è possible avviare la configurazione:

mysql 5.5 configuration start

mysql 5.5 configuration start

Mashera che indica il termine della configurazione con creazione del file di confiugrazione, installazione dle servizio MySQL il suo avvio e l’applicazione delle impostazionei di sicurezza.

mysql 5.5 Configuration end

mysql 5.5 Configuration end

MySQL Connectors

Qualsiasi sistema che funziona con ODBC e JDBC può utilizzare MySQL. I drivers per connettersi a mysql utilizzando i principali linguaggi di programmazione sono disponibili alla pagina:

MySQL :: MySQL Connectors

Risorse:

Installare e configurare mysql-server in Centos 5.9 64 bit

Nell’installazione di mysql in Centos 5.9 64 bit vengono installati oltre al server mysql i clients i386 e x86_64. Il comando è il classico

yum install mysql mysql-server

Particolarmente verboso, al primo avvio di mysql, l’output a video in Centos 5.9 a 64 bit con riportati alcuni utili comandi.

service mysqld start

Configurazione

Password di root

Per impostare la password di root

/usr/bin/mysqladmin -u root password 'new-root-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

oppure usare la console interattiva di mysql e usare i comandi SQL

# mysql mysql 
mysql> UPDATE user SET password=PASSWORD("54321z") WHERE user='root';
mysql> flush privileges;
user anonimo e database test

All’installazione viene generato di default il database di test e lo user anonimo che dovrebbero essere eliminati in un ambiente di produzione. A qusto proposito si può utilizzare lo script

/usr/bin/mysql_secure_installation

che consente anche di impostare la password di root.

di seguto viene evidenziato lo user anonymous

mysql> select user,host FROM user;
+------+-----------------------+
| user | host                  |
+------+-----------------------+
| root | 127.0.0.1             | 
|      | localhost             | 
| root | localhost             | 
|      | localhost.localdomain | 
| root | localhost.localdomain | 
+------+-----------------------+
5 rows in set (0.00 sec)

Lo script mysql_secure_installation in azione

# /usr/bin/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.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

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] Y
 ... 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] n
 ... skipping.

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] Y
 - Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
 ... Failed!  Not critical, keep moving...
 - 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] 
...
...

Avviare MySQL al boot

Controllare che MySQL si avvi automaticamente al boot con

#  chkconfig --list | grep "mysqld"
mysqld         	0:off	1:off	2:off	3:off	4:off	5:off	6:off

Impostare l’avio automatico al boot con

chkconfig mysqld on

controllare il risultato con

#  chkconfig --list | grep "mysqld"
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off

Output nel primo avvio di mysql con diverse utili informazioni.

[root@localhost ~]# service mysqld start
Stopping mysqld:                                           [  OK  ]
Initializing MySQL database:  Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
                                                           [  OK  ]
Starting mysqld:                                           [  OK  ]