mysql -h host -u user -p<whatever> -e"quit"
To vám umožní použít stejný připojovací řetězec, který používáte pro programové odesílání dotazů na server. Můžete přidat || exit 1
do konce pro automatické ukončení u neplatných argumentů. Můžete také chtít přesměrovat stderr na /dev/null
pokud se vám nelíbí automaticky generovaná chybová zpráva MySQL.
Můžete použít následující příkaz (za předpokladu, že máte v PATH nastaveno mysql):
mysql -h host -u user -p
Stačí nahradit hostitel a uživatel se správnými hodnotami a poté byste měli být vyzváni k zadání hesla.
Odpověď @Phil's Answer a @Mr.Brownstone's Answer by pro vaši otázku měly stačit, takže +1 pro oba.
Pro následující předpokládejme, že se přihlašujete pomocí uživatelského jména myuser
Jakmile se připojíte k mysql, měli byste spustit následující dotaz:
SELECT USER(),CURRENT_USER();
- USER() hlásí, jak jste se pokusili ověřit v MySQL
- CURRENT_USER() hlásí, jak vám bylo povoleno ověření v MySQL
Někdy jsou různé. To vám může poskytnout přehled o tom, proč se můžete přihlásit k mysql.
Zde je další dotaz, který musíte spustit:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
To vám ukáže způsoby, kterými se můžete přihlásit jako myuser
.
Pokud vidíte 'myuser'@'localhost'
, pak se můžete ověřit ze serveru DB.
Pokud vidíte 'myuser'@'127.0.0.1'
a nevidíte 'myuser'@'localhost'
, pak se můžete znovu ověřit z DB serveru, ale musíte zadat --protocol=tcp
z příkazového řádku.
Pokud vidíte 'myuser'@'%'
, pak se můžete vzdáleně přihlásit z libovolného serveru.
Pokud vidíte 'myuse'[email protected]'10.20.30,%'
, pak můžete provádět vzdálené přihlášení pouze z 10.20.30.% síťového bloku.
Jakmile uvidíte, co má 'mysql.user' pro vašeho uživatele, možná budete chtít povolit nebo omezit přihlášení myuser jedním způsobem a ne druhým.
Pokud chcete jednoduše zkontrolovat, zda je heslo pro myuser
je whateverpassword
, můžete provést následující:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
Můžete to zkontrolovat z příkazového řádku následovně:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
Pokud nejste root
a chcete otestovat pouze myuser, můžete to udělat takto:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
Pokud získáte 1, heslo pro myuser je ověřeno jako dobré.