Как вы проверяете учетные данные 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.% 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 подтверждается как хороший.
mysql -h host -u user -p<whatever> -e"quit"
Это позволяет вам использовать ту же строку подключения, которую вы используете для программной отправки запросов на сервер. Вы можете добавить || exit 1
в конец авто выход по недопустимым аргументам. Вы также можете перенаправить stderr, /dev/null
если вам не нравится автоматически сгенерированное сообщение об ошибке MySQL.
Вы можете использовать следующую команду (при условии, что у вас настроен mysql в вашем PATH):
mysql -h хост -u пользователь -p
Просто замените хост и пользователя правильными значениями, и вам будет предложено ввести пароль.
Ваш вопрос так прост, или вам нужно протестировать конкретный случай?
источник