Проверить учетные данные MySQL из командной строки Linux?

17

Как вы проверяете учетные данные 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.% Netblock.

Как только вы увидите, что «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хотите и хотите проверить только myuser, вы можете сделать это:

PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`

Если вы получаете 1, пароль для myuser подтверждается как хороший.

RolandoMySQLDBA
источник
13
mysql -h host -u user -p<whatever> -e"quit"

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

CSTobey
источник
6

Вы можете использовать следующую команду (при условии, что у вас настроен mysql в вашем PATH):

mysql -h хост -u пользователь -p

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

Mr.Brownstone
источник
2
Я хочу проверить программно. Как то, что возвращает истину или ложь.
Джейк Уилсон
2
mysql --user=user_name --password=your_password dbname

Ваш вопрос так прост, или вам нужно протестировать конкретный случай?

Philᵀᴹ
источник