jmgomez-IAA / loogbook

Personal web page
0 stars 0 forks source link

Post Ideas: Los mundos de Altium #41

Open jmgomez-IAA opened 5 years ago

jmgomez-IAA commented 5 years ago

Librerías

Altium Wiki Working with Database Libraries_AD)

Manejo de Librarias con Bases de Datos

Existen dos posibilidades:

Proposito

Altium permite crear librarías en una base de datos e importar los componentes.

Procedimiento

Hay que crear una librerias DBLib, en ella establecer una Conexion entre el origen de datos, , y Altium. Y finalmente establecer la relación entre los campos de la base de datos y los parametros de los componentes de Altium.

Requisitos

Procedimiento

MariaDB

Descargar MariaDB server msi. Instalar y dejar los parametros por defecto. Apuntar la contraseña de root.

Ahora vamos a configurar nuestra base de datos: Ejemplos de comandos Nos conectamos por la consola de MySQL Start -> MySQL Client (MariaDB)

#Y ahora  creamos un usuario y le asignamos password.
MariaDB [(none)]> CREATE USER jmgomez IDENTIFIED BY 'testpass';
Query OK, 0 rows affected (0.030 sec)
l#e damos acceso a todo desde localhost
MariaDB [(none)]> GRANT USAGE ON *.* TO 'jmgomez'@localhost IDENTIFIED BY 'testpass';
Query OK, 0 rows affected (0.020 sec)
#Le permitimos controlar la base de datos
MariaDB [(none)]> GRANT ALL privileges ON `libiaa`.* TO `jmgomez`@localhost;
Query OK, 0 rows affected (0.028 sec)

#Finalmente comprobamos.
MariaDB [(none)]> SHOW GRANTS FOR 'jmgomez'@localhost ;

ODBC Driver

Descagar el ODBC driver de x64 e instalar.

Verficar el ODBC Driver

Microsoft Docu (Para ello vamos a emplear la herramienta Órigenes de datos ODBC (64bit) de windows 10.)[https://help.syncfusion.com/report-platform/report-server/how-to/create-dsn-for-mysql] Es importante abrir el ODBC Data Source Administrator* de x64, que es el que hemos instalado Abrir el ODBC Data Source Administrator en Windows 10. On the Start page, type ODBC Data Sources. The ODBC Data Sources Desktop App should appear as a choice. To open the ODBC Data Source Administrator in Windows 7 On the Start menu, click Control Panel. In Control Panel, click Administrative Tools. In Administrative Tools, click Data Sources (ODBC).

En la pestaña de drivers/controladores debe estar el driver de ODBC de MariaDB ODBC 3.1 Driver. Con esto confirmamos que todo esta ok.

Librería de componentes en Base de Datos en Altium

Creamos una librería dbLIB

En este caso, en lugar de seleccionar un fichero mdb vamos a emplear una conexion a la base de datos ODBC. Connection String: Provider=MSDASQL.1;Password=testpass;Persist Security Info=True;User ID=jmgomez;Extended Properties="Driver={MariaDB ODBC 3.1 Driver};Server=localhost;Database=libiaa;User=jmgomez;Option=3"

Otro Connection String: Provider=MSDASQL;Driver={MySQL ODBC 8.0 ANSI Driver};Server=localhost;Database=Parts;User=Randy;Password=Randy;Option=3;;

Para conectar con una fuente de datos en lugar de con un driver: Provider=DSN=MSDASQL;Data Source=Aries MariaDB 1;Server=localhost;Database=libiaa;User=jmgomez;Password=testpass;Option=3"

Y le damos a build. En Advanced hay mas parametros. Altium DBLib MySQL Connection Strings

Important Quote Characters

For MySQL in the Altium DBlib select the Advanced button and enter accent characters for the Left and Right Quote Characters.

The accent character is the ` key above the ^ key on your keyboard.

Despues connect.

Ya deben aparecer las tablas a la izquierda. Habilitamos las que nos interesen. Y Listo.

Seleccionar los campos a mostrar.

En el Field Mappings seleccionamos que queremos mostrar y con que parametros queremos enlazar los datos de la base de datos con los componentes.

Anexo 1: Access data base on Bash linux

Empleamos la herramienta mdbtools Obtenemos las dela base de datos mdb-tables Resistors.mdb -1 Extraemos la estructura de las tabla de la base de datos: mdb-schema Resistors.mdb mysql > Resistors_schema.sql Dump de los datos de la base de datos Resistor SMD de la base de datos Resistor.MDB mdb-export -D '%Y-%m-%d %H:%M:%S' -I mysql Resistors.mdb "Resistors SMD" > resistor_smd_data.sql

Warning debemos filtrar los caracteres no soportados, tales como \ en las rutas de los ficheros.

Anexo 2

Acceder con Excel a ODBC https://dba.stackexchange.com/questions/192083/excel-query-using-mariadb-odbc-driver

Anexo 3

Mezclar varias tablas o fichero enla ODBC String https://mariadb.com/kb/en/library/connect-odbc-table-type-accessing-tables-from-another-dbms/

jmgomez-IAA commented 5 years ago

Librerias DBLib Altium en Rpi3

Links

How to install and configure MariaDB unixODBC driver

Introducción

Vamos a instalar y configurar un driver ODBC en nuestro sistema raspberry.

Existen dos posibilidades, por un lado o bien instalamos el driver libmyodbc que es un driver para soportar MySQL don UNIXODBC. O bien lo compilamos desde la fuente.

Procedimiento

#Install MariaDB server
$ sudo apt-get install mariadb-server

Verficamos la version

$ sudo apt-cache policy mariadb-server
mariadb-server:
  Instalados: 10.1.38-0+deb9u1
  Candidato:  10.1.38-0+deb9u1
  Tabla de versión:
 *** 10.1.38-0+deb9u1 500
        500 http://raspbian.raspberrypi.org/raspbian stretch/main armhf Packages
        100 /var/lib/dpkg/status

Entramos en mysql y vamos a crear unos datos de ejemplo:

$ mysql
MariaDB [(none)]> CREATE USER 'jmgomez'@'localhost' IDENTIFIED BY 'testpass';
MariaDB [(none)]> CREATE DATABASE  localdb;
MariaDB [(none)]> GRANT ALL ON localdb.* TO 'jmgomez'@'localhost';
MariaDB [(none)]> USE localdb;
MariaDB [localdb]> CREATE TABLE IF NOT EXISTS sample_table (varchar_column varchar(50) DEFAUL
T NULL);
MariaDB [localdb]> INSERT INTO sample_table (varchar_column) VALUES ('test value');
MariaDB [localdb]> quit

Instalamos el driver odbc desde el repo, pero esto no funciona

$ sudo apt-get install unixodbc unixodbc-dev odbcinst

y algunas herramientas necesarias para compilarlo.

$ sudo apt-get install git checkinstall cmake build-essential libssl1.0-dev 

Con estos paquetes debería funcionar, pero el problema es que no encuentra odbc_config dentro de unixodbc, asi que al final tenemos que compilar a mano.

Compilar unixodbc

$ mkdir unixodbc
$ cd unixodbc/
$ wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.7.tar.gz
$ tar xvf unixODBC-2.3.7
$ ./configure
$ make

Ya no hacemos $ ~/sudo make install~

En vez de realizar el make install, vamos a emplear checkinstall para que quede constancia de la instalación del paquete y uego se puedan resolver dependencias:

$ checkinstall --nodoc --pkgname "unixodbc" --pkgversion "2.3.7" --provides "unixodbc"  --maintainer "jmgomez@localhost" --replaces none --conflicts none --install=no -y

~Pero claro dpkg no tiene constancia de la instalación y tendremos que sobreescrbir la dependencia.~

Ahora vamos a compilaor el driver de MySQL

Clonamos el Repositorio

~/unixodbc $ git clone https://github.com/MariaDB/mariadb-connector-c.git
$ git tag
$ git checkout tags/v3.0.8-release

Construimos el paquete:

$ checkinstall --nodoc --pkgname "mariadb-connector-client-library" --pkgversion "3.0.8" --provides "mariadb-connector-client-library" --requires "libssl1.0.2" --requires "mariadb-server" --maintainer "jmgomez@localhost" --replaces none --conflicts none --install=no -y

checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran Este software es distribuído de acuerdo a la GNU GPL


* Debian package creation selected


Este paquete será creado de acuerdo a estos valores:

0 - Maintainer: [ jmgomez@localhost ] 1 - Summary: [ MariaDB ODBC library ] 2 - Name: [ mariadb-connector-client-library ] 3 - Version: [ 3.0.8 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ checkinstall ] 7 - Architecture: [ armhf ] 8 - Source location: [ mariadb-connector-c ] 9 - Alternate source location: [ ] 10 - Requires: [ mariadb-server ] 11 - Provides: [ mariadb-connector-client-library ] 12 - Conflicts: [ none ] 13 - Replaces: [ none ]

Installing with make install...

====================== Resultados de la instalación ===================== Makefile:846: fallo en las instrucciones para el objetivo 'cmake_check_build_system' make: *** [cmake_check_build_system] Violación de segmento

Este fallo se debe a que falta la dependencia gettext link_segfault

$ sudo apt-get install gettext

No el fallo se soluciona recompilando desde las fuentes checkinstall.

$ sudo  apt-get  remove  checkinstall
$ git clone https://github.com/giuliomoro/checkinstall
$ cd checkinstall
$ make
$su
$make install
$checkinstall
$ dpkg -i checkinstall_20190907-1_armhf.deb

Ahora ya si podemos construir nuestro paquete:

$ checkinstall --nodoc --pkgname "mariadb-connector-client-library" --pkgversion "3.0.8" --provides "mariadb-connector-client-library" --requires "libssl1.0.2" --requires "mariadb-server" --maintainer "jmgomez@localhost" --replaces none --conflicts none --install=no -y 
$ dpkg -i mariadb-connector-client-library_3.0.8-1_armhf.deb

No es necesario instalarlo solo se usa para compilar el siguiente

Ahora vamos a construir el paquete ODBC driver de mysql desde el codigo fuente link:

$git clone https://github.com/MariaDB/mariadb-connector-odbc.git
$ cd maria
git checkout tags/v3.0.8-release
$ echo "MariaDB ODBC driver" | tee description-pak
$ checkinstall --nodoc --pkgname "mariadb-connector-odbc" --pkgversion "3.0.8" --provides "mariadb-connector-odbc" --requires "unixodbc,odbcinst,libssl1.0.2" --maintainer "jmgomez@localhost" --replaces none --conflicts none --install=no -y
$ sudo dpkg -i mariadb-connector-odbc_3.0.8-1_armhf.deb
Al no haber sido istalado unisodbc con dpkg tenemos que forzar
sudo dpkg  --force-all -i  mariadb-connector-odbc_3.0.8-1_armhf.deb

Y ahora testeamos que funcnioa:

 $ cat << EOF | sudo tee  /etc/odbcinst.ini
> [MariaDB]
> Driver = libmaodbc.so
> Description = MariaDB ODBC Connector
> EOF
[MariaDB]
Driver = libmaodbc.so
Description = MariaDB ODBC Connector
pi@raspberrypi:~/unixodbc/mariadb-connector-odbc $ cat << EOF | sudo tee /etc/odbc.ini
> [localdb]
> Description = MariaDB localdb
> Driver = MariaDB
> Database = localdb
> Server = 127.0.0.1
> Uid = jmgomez
> Password = testpass
> Port = 3306
> EOF
[localdb]
Description = MariaDB localdb
Driver = MariaDB
Database = localdb
Server = 127.0.0.1
Uid = jmgomez
Password = testpass
Port = 3306
pi@raspberrypi:~/unixodbc/mariadb-connector-odbc $ cat /etc/odbc.ini
[localdb]
Description = MariaDB localdb
Driver = MariaDB
Database = localdb
Server = 127.0.0.1
Uid = jmgomez
Password = testpass
Port = 3306
pi@raspberrypi:~/unixodbc/mariadb-connector-odbc $ echo | iusql localdb -b
pi@raspberrypi:~/unixodbc/mariadb-connector-odbc $ echo "select * from sample_table" | iusql localdb -b
+---------------------------------------------------+

| varchar_column                                    |

+---------------------------------------------------+

| test value                                        |
+---------------------------------------------------+

SQLRowCount returns 1
1 rows fetched
pi@raspberrypi:~/unixodbc/mariadb-connector-odbc $

Apendice : Solucion en Stackoverflow para PC

https://unix.stackexchange.com/questions/313858/connect-to-mariadb-mysql-and-ms-access-mdb-databases-via-localhost-using-unixo/313859#313859

Apendice A: Investigar estos paquetes, es unixodbc-bin una compilacion de nuestro driver

libmyodbc : Este paquete esta obsoleto odbc-postgresql tdsodbc unixodbc-bin

jmgomez-IAA commented 5 years ago

Subversion

Enlaces

2013 Raspberry Pi How to: Set Up a SVN Server http://www.yolinux.com/TUTORIALS/LinuxSubversionAndTracServer.html

Instalar Apache

sudo pacman -S apache

Debemos habilitar el servicio httpd para que inicie Apache, httpd.service. sudo systemctl start apache sudo systemctl enable apache

Instalar y Configurar servidor de Subversion para los proyectos con webdav y ssl?

Procedimiento

Instalamos subversion el paquete subversion de archlinux sudo pacman -S subversion

Creamos un directorio donde almacenar nuestros repositorios $ mkdir -p /home/svn/repositories

Editamos el fichero de configuración de apache (httpd.conf) para integrar dentro svn. Vamos a crear una direccion (/svn) que cuelga de nuestra servidor en la que se encontraran los repositorios. Es decir, el acceso a los repositorios sera:

http://server_addr/**svn**/_REPO_NAME_

  • server_addr es la direccino del servidor.
  • svn es la LOCATION que vamos a crear dentro del servidor apache.
  • _REPONAME es el nombre de ejemplo de un repositorio.

Let's go hunt @babyshark

Editamos el fichero /etc/httpd/conf/httpd.conf sudo nano /etc/httpd/conf/httpd.conf

Habiltamos los siguientes modulos, y en caso de no existir los añadimos a la lista de módulos a cargar:

El orden es importante hay que preservarlo:

LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so

To SSL or not to SSL? En general podemos activar el modo SSL y evitar posibles ataques de man in the middle. La diferencia es que nuestro web sera: https://webserver_addr/svn/REPO_NAME o bien http://web_server_addr/svn/REPO_NAME por ahora desactivado:

~Generate the certificate by:~ ~cd /etc/httpd/conf/~ ~openssl req -new -x509 -keyout server.key -out server.crt -days 365 -nodes~ ~Add the following to /etc/httpd/conf/extra/httpd-ssl.conf (or to /etc/httpd/conf/extra/httpd-vhosts.conf if you are not using ssl). Include the following inside of a virtual host directive:~

Añadimos esta localtion en el httpd.conf directamente ya que no empleamos serivdores virutales. cat << EOF | tee /etc/httpd/conf/httpd.conf

<Location /svn> DAV svn SVNParentPath /home/svn/repositories AuthzSVNAccessFile /home/svn/.svn-policy-file AuthName "SVN Repositories" AuthType Basic AuthUserFile /home/svn/.svn-auth-file Require valid-user

Si añadimos la directiva SVNListParentPath On, podemos listar el directorio que contiene todos los repos.

<Location /svn> DAV svn SVNParentPath "/net/svn/repositories" --optional auth stuff

SVNListParentPath On # <--- Add this line to enable listing of all repos

~To make sure the SSL settings get loaded, uncomment the SSL configuration line in /etc/httpd/conf/httpd.conf so it looks like this:~

~LoadModule ssl_module modules/mod_ssl.so~ ~LoadModule socache_shmcb_module modules/mod_socache_shmcb.so~ ~Include /etc/httpd/conf/extra/httpd-ssl.conf~

Ahora vamos a crear los fichero desde los cuales httpd leera a configuración y los accesos a los repositorios. Esta etiqueta indica los repositorios y cada una de las personas que tienen acceso al mismo.

" AuthzSVNAccessFile /home/svn/.svn-policy-file"

Creamos un fichero /home/svn/.svn-policy-file $ sudo cat << EOF | tee /home/svn/.svn-policy-file

[/]

  • = r

[REPO_NAME:/] USER_NAME = rw

Tenemos que crear una entrada para cada repositorio (REPO_NAME), y darle acceso a cada usuario individualmente. Asi que sustituimos REPO_NAME por REPO_TEST o USER_NAME por jmgomez

The * in the / section is matched to anonymous users. Any access above and beyond read only will be prompted for a user/pass by apache AuthType Basic. The REPO_NAME:/ section inherits permissions from those above, so anon users have read only permission to it. The last bit grants read/write permission of the REPO_NAME repository to the user USER_NAME.

Create /home/svn/.svn-auth-file $ htpasswd -cs /home/svn/.svn-auth-file USER_NAME Al igual que antes debemos sustituir USER_NAME por el usuario que tendra acceso al repositorio.

This is either an htpasswd, or htdigest file. I used htpasswd. Again, because of SSL, I do not worry as much about password sniffing. htdigest would provide even more security vs. sniffing, but at this point, I do not have a need for it. Run the following command

The above creates the file (-c) and uses SHA-1 for storing the password (-s). The user USER_NAME is created.

Para añadir mas usuario ya podemos elimiar el flag (-c) # htpasswd -s /home/svn/.svn-auth-file OTHER_USER_NAME

Crear un proyecto versionado por subversion.

La estructura de un proyecto subversion es estandar,a si que creamos una platilla para emplearla en todos nuestros repositorios:

$ mkdir -p ~/Workspace/lineas_trabajo/plantillas/svn-template/{branches,tags,trunk}

Cargar nuestra plantillas en nuestro svn:

Copy or move your project source files into the created trunk directory.

$ cp -R /my/existing/project/* ~/svn-import/trunk

Import the project

$ svn import -m "Initial import" ~/svn-import https://yourdomain.net/svn/REPO_NAME/

Test SVN checkout

$ svn checkout https://yourdomain.net/svn/REPO_NAME/ /my/svn/working/copy

If everything worked out, you should now have a working, checked out copy of your freshly created SVN repo.

Subversion backup and restore

To back up your subversion repositories,do this for each repository you have.

$ svnadmin dump /path/to/reponame > /tmp/reponame.dump $ scp -rp /tmp/reponame.dump user@server.domain.com:/tmp/

To restore the backup, create the corresponding repositories first:

svnadmin create /path/to/reponame

Then load svn dump into new repo:

svnadmin load /path/to/reponame < /tmp/repo1.dump

Setting Permissions:

chown -R svn:svnusers /path/to/reponame ; chmod -R g+w /path/to/reponame/db/

These repositories should now be all setup.

jmgomez-IAA commented 5 years ago

Adjustar Origen de datos a nuestras necesidades

Altium en su conexion ODBC solo importa los datos de una de las tabals, y todos ellos deben ser incluidos en nuestra libreria. Esto no es eficiente, y en ocasiones es necesario realziar un filtrado o un preprocesamiento de los datos a mostrar en nuestra Conexion.

Mover datas entre bases de datos

Extraer los datos de una base de datos y copiarla en otra

USE `libiaa`;
INSERT INTO `supplier` (`manufacturer_part`,`supplier_id`, `supplier_part`, `supplier_name`, `quatity` ) SELECT `Part Number`,'IAA', `Manufacturer Part Number`,`Manufacturer`,'0'  FROM libiaa.`resistors smd` where `resistors smd`.`Manufacturer` = 'GENERIC' and `resistors smd`.`Case` = '0603';

Crear una vista de los datos

Mediante el comando View podemos crear una tabla Resistors que altium que une las distintas tablas de nuesrto schemna y renombra los nombres de los registros segun nuestro interes.

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `libiaa`.`resistors` AS
    SELECT 
        `libiaa`.`resistors smd`.`Part Number` AS `Part Number`,
        `libiaa`.`resistors smd`.`Library Ref` AS `Library Ref`,
        `libiaa`.`resistors smd`.`Library Path` AS `Library Path`,
        `libiaa`.`resistors smd`.`Comment` AS `Comment`,
        `libiaa`.`resistors smd`.`Component Kind` AS `Component Kind`,
        `libiaa`.`resistors smd`.`Component Type` AS `Component Type`,
        `libiaa`.`resistors smd`.`Footprint` AS `Footprint`,
        `libiaa`.`resistors smd`.`PackageDescription` AS `PackageDescription`,
        `libiaa`.`resistors smd`.`Pin Count` AS `Pin Count`,
        `libiaa`.`resistors smd`.`Footprint Path` AS `Footprint Path`,
        `libiaa`.`resistors smd`.`Footprint Ref` AS `Footprint Ref`,
        `libiaa`.`resistors smd`.`Value` AS `Value`,
        `libiaa`.`resistors smd`.`Status` AS `Status`,
        `libiaa`.`resistors smd`.`Power` AS `Power`,
        `libiaa`.`resistors smd`.`TC` AS `TC`,
        `libiaa`.`resistors smd`.`Voltage` AS `Voltage`,
        `libiaa`.`resistors smd`.`Tolerance` AS `Tolerance`,
        `libiaa`.`resistors smd`.`Part Description` AS `Part Description`,
        `libiaa`.`resistors smd`.`Manufacturer` AS `Manufacturer`,
        `libiaa`.`resistors smd`.`Manufacturer Part Number` AS `Manufacturer Part Number`,
        `libiaa`.`resistors smd`.`Case` AS `Case`,
        `libiaa`.`resistors smd`.`Mounted` AS `Mounted`,
        `libiaa`.`resistors smd`.`SMD` AS `SMD`,
        `libiaa`.`supplier`.`supplier_name` AS `Supplier 1`,
        `libiaa`.`supplier`.`supplier_part` AS `Supplier Part Number 1`,
        `libiaa`.`resistors smd`.`ComponentHeight` AS `ComponentHeight`,
        `libiaa`.`resistors smd`.`HelpURL` AS `HelpURL`,
        `libiaa`.`resistors smd`.`Author` AS `Author`,
        `libiaa`.`resistors smd`.`CreateDate` AS `CreateDate`,
        `libiaa`.`resistors smd`.`LatestRevisionDate` AS `LatestRevisionDate`
    FROM
        (`libiaa`.`resistors smd`
        JOIN `libiaa`.`supplier`)
    WHERE
        `libiaa`.`resistors smd`.`Manufacturer` = 'GENERIC'
            AND `libiaa`.`resistors smd`.`Part Number` = `libiaa`.`supplier`.`manufacturer_part`
            AND `libiaa`.`resistors smd`.`Case` = '0603'
jmgomez-IAA commented 5 years ago

Q&A Stackoverflow

-- Connect to MariaDB (mysql) and MS Access mdb databases via localhost using unixODBC on Debian??

https://unix.stackexchange.com/questions/313858/connect-to-mariadb-mysql-and-ms-access-mdb-databases-via-localhost-using-unixo/313859#313859

jmgomez-IAA commented 5 years ago

Create a Datasource for ODBC MariaDB

Esto es lo que funciona en archlinux:

Creating a Data Source with MariaDB Connector/ODBC on Linux¶

Linux uses UnixODBC as a Driver Manager. To create a data source on Linux, there are two steps:

First, configure UnixODBC to recognize MariaDB Connector/ODBC as a Driver.
Second, configure UnixODBC with a Data Source Name (DSN) for your MariaDB Server. 

You will need to ensure that UnixODBC has been installed before you can perform these steps. Configuring MariaDB Connector/ODBC as a UnixODBC Driver on Linux

The first step is to configure UnixODBC to recognize MariaDB Connector/ODBC as a Driver. To configure the Driver, you can use the odbcinst tool, which can add a configuration entry for MariaDB Connector/ODBC to the system's global /etc/odbcinst.ini file.

For example, create a template file similar to the following, with a name like MariaDB_odbc_driver_template.ini:

[MariaDB ODBC 3.0 Driver] Description = MariaDB Connector/ODBC v.3.0 Driver = /usr/lib64/libmaodbc.so

And then install it to the system's global /etc/odbcinst.ini file with the following command:

sudo odbcinst -i -d -f MariaDB_odbc_driver_template.ini

At this point, you should be able to connect to MariaDB by using the Driver with the SQLDriverConnect function. To connect with SQLDriverConnect, you would need to specify Driver={MariaDB ODBC 3.0 Driver} in your connection string along with your other connection parameters.

See Parameters for connection string options. Configuring a DSN with UnixODBC on Linux

The second step is to configure UnixODBC with a Data Source Name (DSN) for your MariaDB Server. A DSN allows you to centrally configure all of your server's connection parameters, so that you can easily configure how to connect to your server in your environment. To configure the DSN, you can use the odbcinst tool, which can add a configuration entry for the given data source to the system's global /etc/odbc.ini file or your user's local ~/.odbc.ini file.

For example, create a template file similar to the following, with a name like MariaDB_odbc_data_source_template.ini:

[MariaDB-server] Description=MariaDB server Driver=MariaDB ODBC 3.0 Driver SERVER= USER= PASSWORD= DATABASE= PORT=

And then you can install it to the system's global /etc/odbc.ini file with the following command:

sudo odbcinst -i -s -l -f MariaDB_odbc_data_source_template.ini

Or you can install it to your user's local ~/.odbc.ini file with the following command:

odbcinst -i -s -h -f MariaDB_odbc_data_source_template.ini

At this point, you should be able to connect to MariaDB by using the DSN with either SQLConnect or the SQLDriverConnect functions. To connect with SQLConnect, you would have to provide MariaDB-server as the ServerName parameter. To connect with SQLDriverConnect, you would have to provide DSN={MariaDB-server} in the connection string along with your other connection parameters.

See Parameters for connection string options.

UnixODBC also provides a GUI to add DSNs. However, MariaDB Connector/ODBC doesn't yet support this GUI interface for adding DSNs. Verifying a DSN Configuration with UnixODBC on Linux

You can verify that a DSN is properly configured with UnixODBC on Linux by using the isql utility.

For example, if the DSN is called MariaDB-server, then we can verify that it works properly by executing the following:

$ isql MariaDB-server +---------------------------------------+ Connected!
sql-statement
help [tablename]
quit

+---------------------------------------+ SQL> SELECT @@global.hostname; +-------------------------------------------+ | @@global.hostname | +-------------------------------------------+ | ip-172-30-0-249.us-west-2.compute.internal| +-------------------------------------------+ SQLRowCount returns 1 1 rows fetched SQL> quit

jmgomez-IAA commented 5 years ago

Allow connections from Remote Machine

Links

Configuring mariadb for remote client access

Procedimiento

En primer lugar testear que es posible conectarse a ese puerto del servidor, en otro caso el problema puede estar en el BIND de Mysql (/etc/my.cfg o mas concretamente en los fichero de configuracion /etc/mt.cnf.d/server.cnf).

ncat host_ip port

~]$ ncat 192.168.122.143 3306
~]$ ss -a

En caso de que la conexion no sea refused, el puerto estara LiSTENING pero no tendremos acceso concedido para conectarnos.

~]$ mysql -h 10.9.0.246 -u jmgomez -p
Enter password: 

ERROR 1130 (HY000): Host 'aries' is not allowed to connect to this MariaDB server

~]$ sudo su
[root@aries~]$ mysql

Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 12 Server version: 10.4.8-MariaDB Arch Linux Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON . TO 'jmgomez'@'10.9.0.%' IDENTIFIED BY 'new_password_for_remote' WITH GRANT OPTION;

~]$ mysql -h 10.9.0.246 -u jmgomez -p
Enter password: 

Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 13 Server version: 10.4.8-MariaDB Arch Linux