Перевірте облікові дані MySQL з командного рядка Linux?


Відповіді:


5

@ Відповідь Філа і @ Відповідь Mr.Brownstone в повинно вистачити на ваше запитання, так +1 для них обох.

Далі, припустимо, ви входите з іменем користувача myuser

Після підключення до mysql слід виконати наступний запит:

SELECT USER(),CURRENT_USER();
  • USER () повідомляє, як ви намагалися пройти автентифікацію в MySQL
  • CURRENT_USER () повідомляє, як вам було дозволено автентифікуватись у MySQL

Іноді вони різні. Це може дати вам зрозуміти, чому вам дозволяється входити в 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 перевіряється як хороший.


13
mysql -h host -u user -p<whatever> -e"quit"

Це дозволяє використовувати ту саму рядок з'єднання, яку ви використовуєте для програмного надсилання запитів на сервер. Ви можете додати || exit 1до кінця автоматичний вихід з недійсних аргументів. Ви також можете захотіти перенаправити stderr, /dev/nullякщо вам не подобається автоматично створене повідомлення про помилку MySQL.


6

Ви можете використовувати таку команду (якщо припустимо, що у вашому PATH встановлений mysql):

mysql -h хост -u користувач -p

Просто замініть хост і користувача правильними значеннями, і тоді вам буде запропоновано ввести пароль.


2
Я хочу перевірити програмно. Як щось, що повертає істинне чи хибне.
Джейк Вілсон

2
mysql --user=user_name --password=your_password dbname

Ваше питання просте чи є певний випадок, який потрібно перевірити?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.