Изменить пароль root MySql

Эти файлы являются заполнителями NFS:

/home/johndoe/qwerty/.nfs000000000471494300000944

Немного предыстории

В типичном UNIX файловая система, файл, который в настоящее время используется и открыт, может быть удален, но его содержимое фактически не исчезнет, ​​пока последний дескриптор файла не будет закрыт. Вы можете увидеть это в действии с помощью следующего кода:

$ ps -ef >/tmp/temporaryfile
$ ls -l /tmp/temporaryfile
-rw-r--r-- 1 roaima roaima 6758 Mar  2 14:02 /tmp/temporaryfile

$ ( sleep 60 ; cat ) </tmp/temporaryfile &
[1] 4864

$ rm /tmp/temporaryfile
$ ls -l /tmp/temporaryfile
ls: cannot access /tmp/temporaryfile: No such file or directory

$ fg    # Wait for the rest of the minute
( sleep 60; cat ) < /tmp/temporaryfile
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:44 ?        00:00:02 init [2]
root         2     0  0 09:44 ?        00:00:00 [kthreadd]
root         3     2  0 09:44 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 09:44 ?        00:00:00 [kworker/0:0H]
...
roaima    4857  4786  0 14:02 pts/1    00:00:00 -bash
roaima    4858  4857  0 14:02 pts/1    00:00:00 ps -ef

(Обратите внимание, что это противоположно Microsoft Windows, где файлы не могут быть удалены, пока они еще открыты.)

Объяснение

Файл на сервере NFS может иметь к нему доступ один или несколько клиентов. Сама NFS (в основном) не имеет состояния и поэтому должна имитировать функциональность, которая позволяет доступ к открытому файлу даже после его удаления.

Эмуляция выполняется путем удаления файла с его места в файловой системе, но оставления его на месте в виде файла, имя которого начинается с .nfs . Когда последний читатель / писатель закроет свой дескриптор этого файла, он будет должным образом удален из файловой системы.

Вот пример этого в действии:

$ ps -ef > /var/autofs/net/nfsserver/tmp/temporaryfile
$ ls -l /var/autofs/net/nfsserver/tmp/temporaryfile
-rw-r--r-- 1 roaima roaima 6766 Mar  2 14:14 /var/autofs/net/nfsserver/tmp/temporaryfile

$ ( sleep 60 ; cat ) </var/autofs/net/nfsserver/tmp/temporaryfile &
[1] 4987

$ rm /var/autofs/net/nfsserver/tmp/temporaryfile
$ ls -l /var/autofs/net/nfsserver/tmp/temporaryfile
ls: cannot access /var/autofs/net/nfsserver/tmp/temporaryfile: No such file or directory

$ ls -lA /var/autofs/net/nfsserver/tmp/
total 8
-rw-r--r-- 1 roaima roaima 6766 Mar  2 14:14 .nfs000000000100000300000001

$ rm /var/autofs/net/nfsserver/tmp/.nfs000000000100000300000001
rm: cannot remove ‘/var/autofs/net/nfsserver/tmp/.nfs000000000100000300000001’: Device or resource busy

$ fg    # Wait for the rest of the minute
( sleep 60; cat ) < /var/autofs/net/nfsserver/tmp/temporaryfile
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:44 ?        00:00:02 init [2]
root         2     0  0 09:44 ?        00:00:00 [kthreadd]
root         3     2  0 09:44 ?        00:00:01 [ksoftirqd/0]
...
roaima    4983  4712  0 14:14 pts/0    00:00:00 ps -ef

Следствие

Вы должны игнорировать файлы на монтировании NFS, имена которых начинаются с .nfs . Кроме того, ваш код должен учитывать возможность того, что удаленный каталог не может быть удален до тех пор, пока все эти файлы не исчезнут.

NFS не так прозрачна для приложений, как можно было бы надеяться.

Комментарии

Возможно, причина того, что файлы журнала все еще открыты, заключается в том, что они все еще используются процессом регистратора в вашей удаленной системе.Обычно подход к этому состоит в том, чтобы циклически повторять файлы журнала и загружать и удалять только предыдущие файлы журнала, оставляя текущие файлы в файловой системе для использования процессом регистратора.

Утилиты, такие как logrotate , обрабатывают это с помощью определенных элементов конфигурации, таких как delaycompress , которые (пытаются) гарантировать, что файл журнала не сжимается, пока он все еще используется. (Для примера см. /etc/logrotate.d/apache2 по крайней мере в системах Debian.)

1
04.11.2017, 16:57
1 ответ

Правильная команда для этого:

mysql -uroot -poldp4ssw0rd -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newp4ssw0rd');"

при условии, что oldp4ssw0rd и newp4ssw0rd — старый и новый пароли.

Вам не нужно останавливать или перезапускать сервер MySQL в любое время. Фактически, служба должна быть запущена, чтобы вы могли подключиться к ней и выполнить указанную выше команду.

Примечание. :эта команда решает вашу проблему; однако, как правило, не рекомендуется передавать пароли в качестве аргументов командной строки, поскольку они могут быть видны другим вошедшим -пользователям.

1
27.01.2020, 23:44

Теги

Похожие вопросы