SQLWorkbench configurare per MySQL – Extended Properties

SQLWorkbench è un SQL query tool free particolarmente efficace che supporta un ampio numero di DBMS. Scritto in Java è in grado di interfacciarsi con qualsiasi database per il quale sia disponibile un JDBC driver.  Essendo in java SQLWorkbench potrebbe essere eseguito in qualsiasi Sistema Operativo che disponga di JRE ( Java Runtime Environment)

Tra i database supportati e testati ci sono MySQL e MariaDB SQL. Di seguito i passi per “installare” e configurare SQLWorkbench per MySQL. 
La configurazione per il database postgresql nel post: SQLWorkbench build 125 configurare per PostgreSQL – debian 9.xx

L’ultima versione stabile è la Build 125 del 5 maggio 2019.
Release Note Build 125. Con questa release si è avuto un cambio nel layout delle directory. Tutte le librerie addizionali ( es. esportazione excel ) ora si trovano nella sottodirectory /ext. Pertanto conviene effettuare il download con tutte le librerie opzionali che verranno posizionate correttamente.

Di fatto SQLWorkbench non necessita di una vera installazione è sufficiente scaricare il pacchetto generico, decomprimere e lanciare lo script sqlworkbench.sh. Per poter utilizzare SQLWorkbench è ovviamente necessario java JRE.

Controllare la versione java disponibile con java -version

# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-2~deb9u1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)

Configurare e Installare SQLWorkbench per MySQL

Il pacchetto SQLWorkbench è disponibile alla pagina

http://www.sql-workbench.net/downloads.html

Per poter interagire con MySQL serve inoltre lo specifico driver JDBC. Il driver che andra opportunamente configurato in SQLworkbench è scaricabile dalla pagina
https://dev.mysql.com/downloads/connector/j/
la versione corrente di mysql JDBC Driver è la 8.0.16.
Scaricare la versione JDBC Platform independent

una volta scaricato il driver effettuare il check md5 con

# md5sum mysql-connector-java-8.0.16.tar.gz 
3cd3a2cfa510b48fc54fadfc1db5db61  mysql-connector-java-8.0.16.tar.gz# md5sum mysql-connector-java-8.0.16.tar.gz 

decomprimere con

#  tar zxvf mysql-connector-java-8.0.16.tar.gz 

Il driver estratto

mysql-connector-java-8.0.16.jar

andrà copiato nella directory /ext di sqlworkbench

Operando da terminale

scegliamo la directory opt per l’applicazione quindi

su 
mkdir /opt/sqlworkbench
cd /opt/sqlworkbench

SQLWorkBench 125 con le librerie opzionali occupa circa 26MB e può essere scaricato con

# wget http://www.sql-workbench.eu/Workbench-Build125-with-optional-libs.zip ... Workbench-Build125-with-op 100%[=======================================>]  26.40M  1.03MB/s    in 26s  wget http://www.sql-workbench.eu/Workbench-Build125-with-optional-libs.zip

Decomprimiamo il pacchetto con

# unzip Workbench-Build125-with-optional-libs.zip 

Rendiamo eseguibile per tutti gli users lo script di avvio workbench.sh

# chmod a+x sqlworkbench.sh 

copiare il driver mysql-connector-java-8.0.16.jar che dovrebbe trovarsi in

Download/mysql-connector-java-8.0.16

in
/opt/sqlworkbench/ext

Volendo si può creare un link simbolico a sqlworkbench nel desktop con

ln -s /opt/sqlworkbench/sqlworkbench.sh sqlworkbench

avviamo. Come sempre all’ avvio la finestra in primo piano è quella per creare un profilo di connessione.

Per connettersi a MySQL è necessario a questo punto configurare il driver.

  • Click sul pulsante Manage Drivers
  • In primo piano ci sarà  la finestra Manage drivers

  • Selezionare MySQL dall’ elenco di destra con i DBMS supportati
  • Click sul pulsante cartella in alto a sinistra e selezionare il file driver JDBC per mysql. Evidenziato in giallo era stato precedentemente scaricato nella cartella ext. Premere Open apparirà nella Library il driver .jar quindi premere OK.
  • a questo  punto è possibile completare il profilo di connessione

Si dovrà inserire:

  • nome per la connessione
  • nell URL: host (ip, dominio), porta e database
  • username e password

Se si verifica l’errore:

"The server time zone value 'EDT' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support."

E’ necessario impostare la variabile serverTimezone = UTC utilizzando il pulsante [ Extended Properties ].

Collegamento diretto a server arvixe

Ricercare una stringa in tutto il database mysql

SQLworkbench in azione. Grazie alla funzione  WbGrepData è possibile ricercare una stringa in qualsiasi campo (field) di tutte le tabelle del database. In questo caso la ricerca della stringa maurizio

WbGrepData -searchValue=maurizio -tables=* -types=table

viene riscontrata in 3 tabelle mysql. Tutte chiaramente visualizzate.

Database Compatibili con SQLworkbench

Risorse:

WordPress password dimenticata

wordpress.org Se si è dimenticata la password di amministratore di wordpress e il servizio di posta non è disponibile, per  recuperare l’accesso e l’installazione è possibile:

1) accedere al file wp-config.php
2) generare una nuova password inserendola direttamente nel database mysql.

1 ) accedere al file wp-config.php nella directory principale di wordpress. Il file wp-config contiene le informazioni di accesso al database grazie alle quali è possibile accedere alla tabella  _users con i dati e le password degli utenti

// ** MySQL settings - You can get this info from your web host ** //
 /** The name of the database for WordPress */
 define('DB_NAME', 'wpblog');
/** MySQL database username */
 define('DB_USER', 'wpdbadmin');
/** MySQL database password */
 define('DB_PASSWORD', 'miapassword');
/** MySQL hostname */
 # define('DB_HOST', 'localhost');
 define('DB_HOST', '192.168.1.100:3306');

WordPress passwords basate sul php password hashing.

Le password in word press sono memorizzate nella tabella xx_users

wp_passwd_adminer_1

2) Se si dispone dell’accesso al database mysql via phpMyAdmin o Adminer è possibile recuperare l’accesso a wordpress sostituendo la vecchia password ( dimenticata ) con una nuova password. Per la “crittografia” delle password wordpress utilizza il Portable PHP password hashing framework  ( le prime versioni utilizzavano invece MD5 ).

Il formato di una password che utilizza il php password hashing è facilmente distinguibile dal formato MD5.

php password hashing:   $P$BEMeAQICR602UR9RGRYtzzGz9SNKVA.
MD5 :  551583c11e1e3c9d8e6aeea9a84fe143

La classe con l’algoritmo per la gestione delle password è contenuta nel file ./wp-includes/class-phpass.php. Quindi per generare ad esempio la password di “MyPassword” è sufficiente disporre del file class-phpass.php e includerlo ad esempio nel file passwd_wp.php contenente uno script del tipo:

<!–?php

/** We want to hash password using the current DEFAULT algorithm. */
require(‘./class-phpass.php’);

/** Simple  instruction to generate password and/or to check password. */
$wp_hasher = new PasswordHash( 8, TRUE );
$password = ‘MyPassword‘;
$hashed_password = $wp_hasher->HashPassword( $password );

$checkpass = $wp_hasher->CheckPassword($password, $hashed_password) ;

echo “check result = “ . $checkpass ;
echo “\n”;
echo “password = “ . $password . “\n” ;
echo “hashed_password = “ . $hashed_password ;
echo “\n”;

?>

ll file può essere eseguito da terminale con

$ php passwd_wp.php

oppure può essere reso disponibile via webserver .

La password dimenticata può essere sostituita da una nuova password generata utilizzando lo script soprariportato e adminer o phpMyAdmin

wp_passwd_adminer_2

 

Risorse:

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:

Installare Adminer 3.6.3 in Ubuntu 12.04 server

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:

 

SQL Cast

Per reaiazzare il cast di un campo in SQL si possono seguire questi esempi

esemio di cast in una select questi

SELECT itemdid, cast( codenumber as varchar(10)), mysubject
FROM mytable

Esemio di cast in una JOIN

SELECT *
FROM mytable mt
LEFT JOIN myothertable ot
    on cast(mt.codenumber as varchar(10)) = ot.number_code 

.
Postgresql cast in select query  -> cast bigint to int

select "MenuParent", cast(count("ModuleID") as integer ) 
from menu
GROUP BY "MenuParent", "ModuleID"
ORDER BY "MenuParent" ;

Risorse:

—–