ODBC funktioniert nur mit Sudo

724
Peter

Ich habe Probleme mit UnixODBC. Ich habe die neueste Version installiert und arbeitet derzeit nur mit sudo. Um den ODBC zu testen habe ich verwendet isql. Beispiel:

# isql -v testTable [IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified [ISQL]ERROR: Could not SQLConnect 

Mit sudo

# sudo isql -v testTable +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ 

Warum ist das so und wie kann ich es ohne benutzen sudo?

Hinweis: Ich habe es sudowährend der Installation nicht verwendet . Und ich habe es als Root installiert und versucht, es als Root zu verwenden.

AKTUALISIEREN

# ls -ltr /usr/local/psql/etc/odbcinst.ini ls: cannot access /usr/local/psql/etc/odbcinst.ini: No such file or directory # ls -ltr /etc/odbcinst.ini -rw-r--r-- 1 root root 740 28 nov 8,04 /etc/odbcinst.ini 

Inhalt von /etc/odbcinst.ini

~]# cat /etc/odbcinst.ini   # Driver from the postgresql-odbc package # Setup from the unixODBC package [PostgreSQL] Description = ODBC for PostgreSQL Driver = /usr/lib/psqlodbcw.so Setup = /usr/lib/libodbcpsqlS.so Driver64 = /usr/lib64/psqlodbcw.so Setup64 = /usr/lib64/libodbcpsqlS.so FileUsage = 1   # Driver from the mysql-connector-odbc package # Setup from the unixODBC package [MySQL] Description = ODBC for MySQL Driver = /usr/lib/libmyodbc5.so Setup = /usr/lib/libodbcmyS.so Driver64 = /usr/lib64/libmyodbc5.so Setup64 = /usr/lib64/libodbcmyS.so FileUsage = 1 

Aktualisieren /etc/odbc.ini

[myDSN] Description = MySQL Connection Driver = MySQL Database = testTable User = mysql Password = ****** Port = 3310 Server = localhost Socket = /var/lib/mysql/mysql.sock 

Noch ein Update. Ohne sudo:

odbcinst -j -bash: /usr/local/bin/odbcinst: No such file or directory 

Mit Sudo

sudo odbcinst -j unixODBC 2.3.1 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8 
0

1 Antwort auf die Frage

1
netniV

Überprüfen Sie /etc/odbcinst.ini, /etc/odbc.ini, ~ / .odbc.ini und $ ODBCINI, um festzustellen, welche Rechte zugewiesen sind. Ich bin der Meinung, dass der Benutzer, der den Befehl ausführt, möglicherweise keine Rechte für eine dieser Dateien hat oder die Datenquelle nicht definiert ist, wenn er unter einem anderen Benutzer erstellt wurde.

Aus häufig auftretenden Fehlermeldungen und Was ist eine odbc.ini und was füge ich ein? Überprüfen Sie außerdem /etc/odbc.ini und ~ / .odbc.ini des Benutzers, dem Sie den DSN hinzugefügt haben, sowie den Benutzer, unter dem Sie ausgeführt werden. Wenn diese gleich sind, müssen Sie dies nur einmal tun.


Häufige Fehlermeldungen

[iODBC] [Treibermanager] Der Name der Datenquelle wurde nicht gefunden und es wurde kein Standardtreiber angegeben. Treiber konnte nicht geladen werden, SQLSTATE = IM002

Diese Meldung kann aus mehreren Gründen auftreten. Die beste Lösung besteht darin, durchzugehen, was passiert: Ihre Anwendung wurde mit libiodbc verknüpft, das versucht, eine odbc.ini-Datei auf die eine oder andere Weise zu finden - entweder über die Umgebungsvariable ODBCINI oder über die Fall-Back-Pfade (normalerweise / etc / odbc.ini, abhängig davon, wie es kompiliert wurde). Sie sollten prüfen, ob eine solche Datei an einem geeigneten Ort vorhanden ist und darauf zugegriffen werden kann (insbesondere, wenn Ihre Anwendung mit unterschiedlichen Benutzerrechten ausgeführt wird, z. B. apache / php als www-data-Benutzer).

Außerdem kann es vorkommen, dass iODBC eine geeignete odbc.ini-Datei gefunden hat, aber keine der gefundenen Dateien enthält den angeforderten DSN. Überprüfen Sie die Syntax Ihrer Anfrage. Ist die ODBC-Verbindungszeichenfolge korrekt und ist der von Ihnen angeforderte DSN vorhanden? Siehe auch den Abschnitt "Was ist ein odbc.ini und was muss ich einfügen?".


Was ist ein Odbc.ini?

Eine odbc.ini ist die Hauptkonfigurationsdatei, in der alle Ihre DSNs und ein Großteil der ODBC-Konfigurationsparameter gespeichert sind. iODBC verfügt über einen Suchpfad zum Auffinden einer solchen Konfigurationsdatei: Zuerst wird die Umgebungsvariable ODBCINI geprüft, um zu sehen, ob sie auf eine geeignete Datei verweist, oder ~ / .odbc.ini (analog zu Benutzer-DSNs unter Windows) und dann / etc / odbc.ini ("systemweit") sind Rückfallorte.

Die Datei odbc.ini besteht aus 3 Teilen: einem Satz von ODBC-Optionen, einer Liste von DSNs und dann den Definitionen der Datenquelle selbst:

[ODBC Data Sources]  PostgreSQL native localhost = PostgreSQL native driver  PostgreSQL OpenLink localhost = PostgreSQL over OpenLink multi-tier  [PostgreSQL native localhost]  Driver = /usr/lib/postgresql/lib/libodbcpsql.so  Host = localhost  Server = localhost  ServerName = localhost  Database = tim  UserName = tim  UID = tim  Port = 5432  [PostgreSQL OpenLink localhost] Description = PostgreSQL, over openlink MT  Driver = /opt/openlink/lib/oplodbc.so  ServerType = PostgreSQL95  Host = localhost  Database = tim  Username = tim  LastUser = tim  User = tim FetchBufferSize = 99  [ODBC]  ;Trace = 1  ;TraceFile = /tmp/odbctrace.log ;Debug = 1 ;DebugFile = /tmp/odbcdebug.log  

Die Liste der ODBC-Datenquellen korreliert mit der Datei odbcinst.ini (oder der Umgebungsvariablen ODBCINSTINI): Für jeden als Beschreibung des Treibers verwendeten Wert sollte ein entsprechender Abschnitt in der Datei odbcinst.ini vorhanden sein, in dem sowohl die Treiber- als auch die Setup-Bibliothek aufgeführt sind (zur Unterstützung) mit grafischer Konfiguration unter Verwendung von iodbcadm-gtk und auch zur Anzeige eines Eingabefelds, wenn zum Verbindungszeitpunkt unzureichende Optionen angezeigt werden.

Die Liste der Attribute ist vom Treiber abhängig, wie oben gezeigt: Der native Postgresql-Treiber ruft sie von Openlink Multi-Tier ab, daher müssen Sie die Treiberdokumentation nachlesen.

Vorausgesetzt, Sie haben iODBC heruntergeladen / installiert / kompiliert, verfügen Sie auch über eine GTK-basierte Benutzeroberfläche zum Konfigurieren Ihrer ODBC-DSNs: Führen Sie iodbcadm-gtk aus.

Kommentare sind nicht für eine erweiterte Diskussion vorgesehen. Diese Konversation wurde zum Chat verschoben (http://chat.stackexchange.com/rooms/69395/discussion-on-answer-by-netniv-odbc-working-only-with-sudo). DavidPostill vor 6 Jahren 0