nem tud bejelentkezni mysql felhasználói rootként a normál felhasználói fiókból az ubuntu 16.04 verzióban

127

Telepítettem az Ubuntu 16.04 LTS-t aphp, amariadb és anginx csomagokkal együtt. Futottammysql_secure_installation -ot, és megváltoztattam a root jelszót.

Most, amikor próbálok bejelentkezni amysql -ra a gyökérkönyvtár használatával, miközben az Ubuntu-t szokásos felhasználói fiókként bejelentkezem, hozzáférést kapok.

Amikor bejelentkezem asudo mysql használatával, a mysql nem is kérdezzen jelszót. Ha futtatom amysql_secure_installtion -ot, látom, hogy a régi beállítások soha nem kerültek állandóan.

Mit csinálok rosszul?

    
készlet codescope 02.05.2016 13:45
forrás

10 válasz

238

Nemrég frissítettem az Ubuntu 15.04-ről 16.04-re, és ez nekem működött:

  1. Először csatlakozzon a sudo mysql-be

    sudo mysql -u root
    
  2. Ellenőrizze a db-ban lévő fiókjait

    SELECT User,Host FROM mysql.user;
    +------------------+-----------+
    | User             | Host      |
    +------------------+-----------+
    | admin            | localhost |
    | debian-sys-maint | localhost |
    | magento_user     | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    
  3. Az aktuális root @ localhost-fiók törlése

    mysql> DROP USER 'root'@'localhost';
    Query OK, 0 rows affected (0,00 sec)
    
  4. Újítsa meg a felhasználót

    mysql> CREATE USER 'root'@'%' IDENTIFIED BY '';
    Query OK, 0 rows affected (0,00 sec)
    
  5. Adjon engedélyeket a felhasználónak (ne felejtse el a kiváltságokat törölni)

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    Query OK, 0 rows affected (0,00 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0,01 sec)
    
  6. Lépjen ki a MySQL-ból, és próbálja újra csatlakoztatni a sudo nélkül.

Remélem, ez segít valakinek:)

    
válasz adott Loremhipsum 08.06.2016 11:04
forrás
83
  

Ha 5.7-et telepít, és nem ad meg jelszót aroot felhasználónak, akkor   aauth_socket plugint fogja használni. Ez a plugin nem érdekli és   nem kell jelszó. Csak ellenőrzi, hogy a felhasználó csatlakozik-e   egy UNIX aljzattal, majd összehasonlítja a felhasználónevet.

A Felhasználói jelszó megváltoztatása MySQL-ben 5.7 A "plugin: auth_socket „

Annak érdekében, hogy aplugin visszaállítsa amysql_native_password:

értékre
  1. Jelentkezzen be a sudo-val:

    sudo mysql -u root
    
  2. Módosítsa aplugin -ot, és állítson be egy jelszót egyetlen parancssal:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
    

Természetesen a fenti parancs használatával üres jelszót is megadhat.

Csak a rekordhoz (ésMariaDB < 10.2 felhasználókhoz) van egy másik módja annak, hogy csak aplugin változót változtassuk meg jelszó megadása nélkül (üresen hagyva):

update mysql.user set plugin = 'mysql_native_password' where User='root';
// to change the password too (credits goes to Pothi Kalimuthu)
// UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('secret') WHERE User = 'root';
FLUSH PRIVILEGES;
    
válasz adott Todor 23.07.2016 09:46
forrás
8

A probléma itt az, hogy ha a MariaDB vagy a MySQL telepítve van / frissül (különösen ha valahogy a root nem jelszó nélkül van beállítva), akkor a Felhasználók táblában a jelszó valójában üres (vagy figyelmen kívül hagyható). a MySQL felhasználónak megfelelő rendszerfelhasználó. Ezt a következőképpen tesztelheti, ha átvált a rendszer gyökérére, majd írja be:

mysql -uroot -p

Ezután írja be vagy nincs jelszó vagy rossz jelszó. Valószínűleg belépsz. (Lehetséges, hogy akár csak a# mysql -ból is be tudsz jelentkezni az unix gyökérből, mivel a jelszó nem releváns és a felhasználó definiálva van.)

Szóval mi történik? Nos, ha rootként jelentkezel be, és tegye a következőket:

select User,host,plugin from mysql.user; 
+----------------+-----------+-----------------------+
| User           | host      | plugin                |
+----------------+-----------+-----------------------+
| root           | localhost | auth_socket           |
+----------------+-----------+-----------------------+

Megjegyzés:auth_socket (ami aunix_socket -ban olvasható a MariaDB-ban). Ezek az aljzatok figyelmen kívül hagyják a jelszavakat, és engedélyezik a megfelelő Unix felhasználókat anélkül, hogy jelszót ellenőrizne. Ezért tud bejelentkezni a root -el, de nem egy másik felhasználóval.

A megoldás tehát a felhasználók frissítése aauth_socket/unix_socket használatára és megfelelő jelszó beállítása.

A 2017-es Ubuntu 16 verzióján lévő MariaDB (< 10.2) verzióban ez elegendő:

UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';

(Lehetséges, hogy a plugin ürítésének beállítása működni fog YMMV, ezt nem próbáltam meg.)

UPDATE mysql.user SET plugin = '', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';

Egyébként:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';

Ezután

FLUSH PRIVILEGES;

A rekordhoz a felhasználó törlésével és "%" -al való újbóli létrehozásával kapcsolatos megoldás teljesen kizárt az adatbázisból, és más problémákat okozhat, hacsak nem kapja meg agrant utasítást. gyökér már van.

Tapasztalatom szerint a probléma csak a root felhasználóval történik, mivel a többi felhasználó manuálisan nem lesz része a kezdeti telepítés / frissítés részeként.

    
válasz adott Gazzer 14.10.2017 06:18
forrás
4

Ha telepítette a MySQL / MariaDB-t az alaptáraktól, a felhasználók nem tudnak bejelentkezni a MySQL-hez MySQL root felhasználóként a saját Unix bejelentkezésükből (nem alkalmazható sudo )

  1. Jelentkezzen be a MySQL gyökérhéjába:

    $ sudo mysql -u root -p
    
  2. Végezze el a lekérdezések alatt:

    use mysql;
    update user set plugin='mysql_native_password' where user='root';
    flush privileges; 
    quit;
    
  3. Nyisson meg egy új héjat, majd:

    $ mysql -u root -p
    

Forrás:

link

p>     
válasz adott Gayan Weerakutti 02.12.2017 09:31
forrás
2

Próbálj létrehozni egy új mysql-fiókot, számomra működött (mysql 5.7.12):

  1. Bejelentkezés sudo-ként:

    sudo mysql -uroot
    
  2. Új felhasználó létrehozása és jogosultságok megadása (nincs jelszó):

    CREATE USER 'admin'@'localhost' IDENTIFIED BY '';
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';
    
  3. Jelentkezzen be új felhasználóként:

    mysql -uadmin
    
válasz adott Alex Yakovlev 28.05.2016 11:37
forrás
1

Először próbálja meg ezt a kódot

echo "CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';" > your_init_file.sql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;" >> your_init_file.sql 
echo "FLUSH PRIVILEGES;" >> your_init_file.sql

, majd

killall mysqld
mysqld_safe --init-file=$PWD/your_init_file.sql

majd nyomja meg aCtrl+Z parancsot, és írja be:bg, hogy a folyamatot előtérbe helyezze a háttérbe, majd ellenőrizze a hozzáférést:

mysql -u root -proot
mysql> show grants;
    
válasz adott ADHITHYA SRINIVASAN 28.05.2016 11:47
forrás
1

Ha root felhasználóként csak a mysql parancsot futtatod, hozzáférést kapsz a jelszó kérése nélkül, mert a socket hitelesítés engedélyezve van a root @ localhost számára. .

A jelszó beállításának egyetlen módja a natív hitelesítésre való áttérés, mint például:

  

$ sudo mysql

     

mysql > ALTER FELHASZNÁLÓ 'root' @ 'localhost' IDENTIFIED WITH   mysql_native_password BY "teszt";

    
válasz adott Vadiaz 26.07.2017 17:23
forrás
1

Két dolgot kellett csinálnom (a @Todor és @Loremhipsum köszönhetően):

update mysql.user set plugin = 'mysql_native_password' where User='root';
grant all privileges on *.* to 'root'@'localhost';

, majd:

FLUSH PRIVILEGES;

Nem javasolnám aroot felhasználót.

    
válasz adott Franc Drobnič 03.01.2018 17:43
forrás
0

Alkalmaztam néhány, a MariaDB használatához létrehozott hozzárendelési szkriptet, és befutottam ezt a pontos problémát. Egy csomó információ összegyűjtése itt egy Gazzer válasza valóban zérus a számban; mindez aauth_socket /unix_socket beállításra esik.

Tehát amikor a MariaDB 5.5 (Ubuntu 14.04 alatt) és a MariaDB 10 alatt (Ubuntu 16.04) használja a MySQL-t, és futtatja ezt a parancsot, azonnal felszámolja a dolgokat:

UPDATE mysql.user SET plugin='' WHERE User='root';
FLUSH PRIVILEGES;

A többi válasz - köztük a a Loremhipsum által ebből a postból származó legmagasabb szavazott választ - valóban ösztönzi a rossz gyakorlatokat, egy felhasználót, majd újra létrehozza őket. Számomra ez eléggé radikális megoldás. A legjobb / legegyszerűbb megoldás azplugin érték érvénytelenítéséhez, az átfedési jogosultságok megszüntetéséhez és az élethez való hozzáféréshez.

    
válasz adott JakeGould 20.10.2017 02:54
forrás
-1

Hasonló probléma merült fel, és a következőket futtatta:

mysql_upgrade --force
    
válasz adott klob 03.05.2016 08:48
forrás