DbLog Userrechte

Begonnen von abc2006, 28 Juli 2019, 17:13:36

Vorheriges Thema - Nächstes Thema

abc2006

Hi,
ich möchte mein FHEM auf einen neuen Server umziehen und nutze diese Gelegenheit, um ein bisschen die Config aufzuräumen.
Auf dem neuen Server habe ich laut der db_create_mysql.sql meinen neuen mariadb 10.1.40 konfiguriert.
Probleme habe ich mit den Zugriffsrechten:
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword';
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';

Nach diesen zwei Zeilen kann ich mich mit
mysql -ufhemuser
ohne Passwortabfrage!! einloggen, mit
mysql -ufhemuser -p
und der anschließenden Passworteingabe erhalte ich die Fehlermeldung
ZitatERROR 1045 (28000): Access denied for user 'fhemuser'@'localhost' (using password: YES)

Wenn ich nach dem passwortlosen einloggen die Datenbank "fhem" benutzen will, erhalte ich den Fehler
Zitat
newfhem:/var/lib/mysql# mysql -ufhemuser
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2218
Server version: 10.1.40-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

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)]> use fhem
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'fhem'




Wenn ich aber den Benutzer mit

CREATE USER 'fhemuser'@'localhost' IDENTIFIED BY 'fhempasswort';

anlege und ihm mit
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'localhost';

Reche vergebe, bekomme ich erwartungsgemäß die Fehlermeldung
me@newfhem:/var/lib/mysql# mysql -ufhemuser
Zitat

ERROR 1045 (28000): Access denied for user 'fhemuser'@'localhost' (using password: NO)

sowie

me@newfhem:/var/lib/mysql# mysql -ufhemuser -p
Zitat

Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2977
Server version: 10.1.40-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

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)]> use fhem
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [fhem]>

Was mache ich verkehrt?

Danke und Grüße,
Stephan

MariaDB [fhem]> show grants;
+-----------------------------------------------------------------------------------------------------------------+
| Grants for fhemuser@localhost                                                                                   |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'fhemuser'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `fhem`.* TO 'fhemuser'@'localhost'                                      |
+-----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

MariaDB [fhem]>



ariaDB [(none)]> select user,host from mysql.user;
+----------+-----------+
| user     | host      |
+----------+-----------+
| fhemuser | %         |
| root     | 127.0.0.1 |
| root     | ::1       |
|          | localhost |
| fhemuser | localhost |
| root     | localhost |
|          | newfhem   |
| root     | newfhem   |
+----------+-----------+
8 rows in set (0.00 sec)

MariaDB [(none)]>




FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

DS_Starter

Hallo Stephan,

überprüfe mal bitte z.B. mit phpMyAdmin, ob dem user  'fhemuser'@'%' die native MySQL-Authentifizierung zugeordnet ist.

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

abc2006

Moin Heiko,

gar nicht so leicht zu finden.
Bitteschön, ist das das, was du sehen wolltest?

Danke und Grüße,
Stephan

FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

DS_Starter

Genau, d.h. es war so eingericht ? Wenn ja, ist es ok.

Wie hast du MariaDB installiert ? Es gibt ja diverse Anleitungen, wie zum Beispiel diese:
https://www.linode.com/docs/databases/mariadb/mariadb-setup-debian/

Hast du es prinzipiell so gemacht ? 
DB schon restartet oder zumindest ein "FLUSH PRIVILEGES;" abgesetzt ?

Was gern vergessen wird, alle Interfaces freizuschalten wenn man es braucht:

[mysqld]
bind-address = ::


Willst du nur lokal arbeiten, oder auch remote auf die DB zugreifen ?
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

abc2006

Hi,
installiert habe ich mit
apt-get install mariadb-server
danach ein
apt-get install phpmyadmin
dann ein
mysql -uroot
dann die Zeilen


CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'xxxxxxxx';
CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';
CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP);

danach ein

flush privileges

sowie ein

reboot


Und das Problem ist reproduzierbar vorhanden.
Mysql:

mysql  Ver 15.1 Distrib 10.1.40-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

OS:

Ubuntu 18.04.2 LTS \n \l



Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

Ah,
hier hab ich was, das könnte das Problem sein:

Sobald die beiden "Jeder"-Benutzer gelöscht sind, funktionierts.
Wenn man in dem Datenbank-anlege-Script den Host von "%" auf "localhost" ändert, gehts auch gleich.
Weiss aber nicht, ob das anderweitig Nachteile hat ...

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

Oh Sorry, hab deine Frage gar nicht beantwortet:

ich will nur lokal arbeiten, als interface deshalb nur 127.0.0.1.

An die Anleitung hab ich mich nicht gehalten, das kann ich (eigentlich) ohne - aber im Prinzip hab ich ja alles gemacht, was da drin steht. Habs grad mal kurz überflogen.
Hoffe, ich hab nicht noch weitere Fragen übersehen ...

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

DS_Starter

Hi Stefan,

naja, mir ging es um das Prinzip.
Wie sieht es aus wenn du folgende Schritte durchführst ...

Terminal lokal öffnen:

sudo mysql -u root -p

und einloggen.

Die Tabelle "mysql" auswählen:

USE mysql;

DAs Kommando absetzen:

UPDATE user SET plugin='mysql_native_password' WHERE User='fhemuser';

Danach wieder:

FLUSH PRIVILEGES;

Exit von der DB:

exit;

Restart DB-Server:

service mysql restart
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

abc2006

Hi Heiko,
tl;dr: gleiches Ergebnis.

reicht dir das, wenn ich die Schritte einfach so der Abfolge nach incl. prompt poste?


root@newfhem:/var/lib/mysql# sudo mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.1.40-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

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)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;                                                                                                                                                                                                               
Query OK, 1 row affected (0.00 sec)

MariaDB [mysql]> CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'xxx';                                                                                                                                                                                                                               
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));                                                                                                         
Query OK, 0 rows affected (0.32 sec)

MariaDB [mysql]> CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));                                                                                                         
Query OK, 0 rows affected (0.34 sec)

MariaDB [mysql]> GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';                                                                                                                                                                                                               
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP);   
Query OK, 0 rows affected (0.38 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> UPDATE user SET plugin='mysql_native_password' WHERE User='fhemuser';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit;
Bye
root@newfhem:/var/lib/mysql# systemctl restart mysql
root@newfhem:/var/lib/mysql# mysql -ufhemuser
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 66
Server version: 10.1.40-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

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)]> exit
Bye
root@newfhem:/var/lib/mysql# mysql -ufhemuser -p
Enter password:
ERROR 1045 (28000): Access denied for user 'fhemuser'@'localhost' (using password: YES)
root@newfhem:/var/lib/mysql#



Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

DS_Starter

Hab deine ANtwort gerade gelesen.

Zitat
Ah,
hier hab ich was, das könnte das Problem sein:

Sobald die beiden "Jeder"-Benutzer gelöscht sind, funktionierts.
Wenn man in dem Datenbank-anlege-Script den Host von "%" auf "localhost" ändert, gehts auch gleich.
Weiss aber nicht, ob das anderweitig Nachteile hat ...

Ah ja, wenn du das Script "mysql_secure_installation" wie in der Anleitung angegeben ausgeführt hättest, wärst du vermutlich nicht auf diesem Problem gestoßen, dann wären diese User nämlich gelöscht worden.  ;)
Die Angabe "%" bezieht sich auf "jeder Host". Deswegen meine Frage ob nur lokale Verwendung. In dem Fall reicht "localhost".

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

abc2006

Okay,
sorry für den Fehler...
Ich würde das - dein Einverständnis vorausgesetzt - mal in den Wikipedia-Artikel einpflegen.
Hab auch drüber nachgedacht, ob ich mal nen kompletten "mysql"-Artikel anfertige..? 
Und Du könntest das ggf. in das db_create_mysql.sql als Kommentar aufnehmen - oder gehst du davon aus, dass andere Leute nicht vor diesem Problem stehen?

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

DS_Starter

#11
Im Wiki kann ja jeder etwas einfügen und Mitarbeit ist immer sehr hilfreich !
Du musst nur darauf achten, dass diese Setup-Informationen nicht immer starr sind und sich aufgrund der Weiterentwicklung von MariaDB (oder auch anderen DB's) bei den Veröffentlichungen auch mal ändern können.
Deswegen ist so ein Wiki nicht immer nur ein Segen, sondern kann manchmal auch verwirrend sein.
Du solltest dich also zumindest auf die Erfahrungen mit deiner DB-Version beziehen.

Was die Scripte angeht ... also ich habe ja das ehrgeizige Ziel eine Weiterntwicklung von DbLog zu erstellen bei der der User nur noch das root-Passwort eingeben muss um das Setup für DbLog automatisiert durchführen zu können und keine Scripte u. dgl. mehr pflegen muss.
Aber ob und wann ich dazu komme steht noch in den Sternen  :-\

Einen Hinweis nehme ich aber gerne mit auf.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter