Fórum Root.cz
Hlavní témata => Server => Téma založeno: aigor.net 15. 12. 2017, 13:21:09
-
Ahoj,
po instalaci noveho serveru (Debian Stretch) mi chodi kazdy den nasledujici report z crontabu od logrotate...
Předmět: Cron <root@server> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
/etc/cron.daily/logrotate:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
error: error running shared postrotate script for '/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1
Co jsem pochopil, tak se mysqladmin nemuze prihlasit do DB, na to vsude radi to stejne - vytvorit '/root/.my.cnf' kam ulozim prihlasovaci udaje. To sem udelal, jako root si spustim mysqladmin bez zadani hesla, ale nic se nezmenilo.
Poradte pls co jeste je spatne...
-
Ahoj,
/etc/logrotate.d/mysql-server používá konfiguraci z /etc/mysql/debian.cnf, nikoliv z /root/.my.cnf
mysqladmin --defaults-file=/etc/mysql/debian.cnf ...
Ten při nové instalaci ve stretchi vypadá takhle
# /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password =
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password =
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
Debian při instalaci mariadb vytváří mysql uživatele root autentizovaného pomocí auth_socket (https://dev.mysql.com/doc/refman/5.5/en/socket-pluggable-authentication.html) pluginu (stejnojmenný unixový uživatel se může připojit k databázi přes socket a bez hesla).
Viz sekci "ROOT USER AUTHENTICATION VIA UNIX SOCKET" v /usr/share/doc/mariadb-server-10.1/README.Debian.gz.
$ echo "select host, user, password, plugin from mysql.user where user like 'root';" | sudo mysql --table
+-----------+------+----------+-------------+
| host | user | password | plugin |
+-----------+------+----------+-------------+
| localhost | root | | unix_socket |
+-----------+------+----------+-------------+
Obecně, pokud nějaký lokální uživatel má mít možnost neinteraktivně přistupovat k lokální databázi, je vhodné vytvořit stejnojmenného mysql uživatele s auth_socket pluginem. Je to jednodušší a bezpečnější - nikde se neválí heslo.
/etc/cron.daily/logrotate:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
Oprav mysql uživatele root, tak aby používal auth_socket plugin. Pokud to nejde, uprav /etc/mysql/debian.cnf. Debian dřív vytvářel mysql uživatele debian-sys-maint (s heslem), takže to je taky možnost.
-
Díky, za perfektní vysvětlení :D
To bylo přesně ono, už to šlape jak má.