Як ви перевіряєте облікові дані MySQL з командного рядка на сервері Linux?
Як ви перевіряєте облікові дані MySQL з командного рядка на сервері Linux?
Відповіді:
@ Відповідь Філа і @ Відповідь Mr.Brownstone в повинно вистачити на ваше запитання, так +1 для них обох.
Далі, припустимо, ви входите з іменем користувача myuser
Після підключення до mysql слід виконати наступний запит:
SELECT USER(),CURRENT_USER();
Іноді вони різні. Це може дати вам зрозуміти, чому вам дозволяється входити в mysql.
Ось ще один запит, який потрібно запустити:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
Це покаже вам способи, яким ви можете ввійти як myuser
.
Якщо ви бачите 'myuser'@'localhost'
, то ви можете аутентифікуватись із сервера БД.
Якщо ви бачите 'myuser'@'127.0.0.1'
та не бачите 'myuser'@'localhost'
, то ви можете повторно пройти автентифікацію з сервера БД, але потрібно вказати --protocol=tcp
командний рядок.
Якщо ви бачите 'myuser'@'%'
, то ви можете робити віддалені входи з будь-якого сервера.
Якщо ви бачите 'myuse'r@'10.20.30,%'
, то ви можете робити віддалені входи лише з 10,20,30% нетблок.
Щойно ви побачите, що "mysql.user" має для вашого користувача, ви можете дозволити або обмежити myuser від logggin в один спосіб, а не в інший.
Якщо ви просто хочете перевірити , якщо пароль myuser
є whateverpassword
, ви можете зробити наступне:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
Ви можете перевірити з командного рядка наступне:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
Якщо ви ще не root
хочете протестувати мійсер, ви можете зробити це:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
Якщо ви отримаєте 1, пароль для myuser перевіряється як хороший.
mysql -h host -u user -p<whatever> -e"quit"
Це дозволяє використовувати ту саму рядок з'єднання, яку ви використовуєте для програмного надсилання запитів на сервер. Ви можете додати || exit 1
до кінця автоматичний вихід з недійсних аргументів. Ви також можете захотіти перенаправити stderr, /dev/null
якщо вам не подобається автоматично створене повідомлення про помилку MySQL.
Ви можете використовувати таку команду (якщо припустимо, що у вашому PATH встановлений mysql):
mysql -h хост -u користувач -p
Просто замініть хост і користувача правильними значеннями, і тоді вам буде запропоновано ввести пароль.