Puncte:0

Acces Mysqli refuzat, folosind socket UNIX

drapel in
Sam

Încerc să învăț PHP și configurez conexiunea la baza de date.
Pe Mysql Workbench, am creat o bază de date numită php și am creat un tabel. Apoi am creat contul "sam"@"localhost",(folosesc desktop Ubuntu și sam este ieșirea din cine sunt ) cu auth_socket, acordat ALL activat . , iar când apăs ctrl+alt+T și intrare mysql și apăsați introduce , mă pot autentifica cu succes.
Acum am urmat https://www.php.net/manual/en/mysqli.quickstart.connections.php , și am încercat să folosesc socket, am eșuat.

2021/08/13 16:54:35 [eroare] 1363#1363: *11 FastCGI trimis în stderr: „Mesaj PHP: Avertisment PHP: mysqli::__construct(): (HY000/1698): Acces refuzat utilizatorului 'sam '@'localhost' în /var/www/php/my2.php pe linia 3PHP mesaj: PHP Avertisment: main(): Nu s-a putut prelua mysqli în /var/www/php/my2.php pe linia 5" în timpul citirii antet răspuns din amonte, client: 127.0.0.1, server: _, cerere: „GET /my2.php HTTP/1.1”, în amonte: „fastcgi://unix:/var/run/php/php7.4-fpm. sock:", gazdă: "localhost:803"

Și aici este codul meu. <?php

$mysqli = mysqli nou("localhost", "sam", Null, "php");

echo $mysqli->host_info . „\n”;

Ieșirea nu este nimic într-un browser.

Apoi am încercat asta.

<html>
   <head>
      <title>Connecting MySQL Server</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'sam';
         //$dbpass = 'root@123';
         $mysqli = new mysqli($dbhost, $dbuser,NULL,NULL,NULL,"/run/mysqld/mysqld.sock");
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
         $mysqli->close();
      ?>
   </body>
</html>

Ieșirea este Conectare eșuată: acces refuzat utilizatorului „sam”@“localhost”
Cu jurnal

2021/08/13 16:59:17 [eroare] 1363#1363: *13 FastCGI trimis în stderr: „Mesaj PHP: Avertisment PHP: mysqli::__construct(): (HY000/1698): Acces refuzat utilizatorului 'sam „@'localhost” în /var/www/php/mysqli.php pe linia 10” în timp ce citiți antetul răspunsului din amonte, client: 127.0.0.1, server: _, cerere: „GET /mysqli.php HTTP/1.1”, în amonte: „fastcgi://unix:/var/run/php/php7.4-fpm.sock:”, gazdă: „localhost:803”

Nu am parola pentru utilizator sam pe mysql.

MariaDB [mysql]> selectați utilizator, parola de la utilizator;
+-----------+------------------------------------- ------+
| utilizator | parola |
+-----------+------------------------------------- ------+
| rădăcină | |
| cineva | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| cineva | *9B8A3238012965AC630589D859535EA0B7C231A7 |
| cineva | *AF411B6C73B3AC3A2316A309A71758175CC14FEE |
| cineva | *D76A454D84260E84578F09915624F275F3D0E08B |
| sam | |
+-----------+------------------------------------- ------+
6 rânduri în set (0,001 sec)

Am schimbat numele de utilizator real cu cineva pentru a proteja confidențialitatea. Puteți vedea asta sam nu au parola.

Puncte:0
drapel in

Utilizați Mysql Workbench pentru a seta o parolă pentru utilizator sam și utilizați acea parolă pentru a vă conecta la biblioteca mysqli. Nu știu dacă Mysql Workbench are o opțiune de clic pentru a face acest lucru, dacă nu sau dacă preferați modul SQL, utilizați ceva de genul:

CREAȚI UTILIZATOR „sam”@“localhost” IDENTIFICAT DE „choose_a_safe_password”
Sam avatar
drapel in
Sam
Ce se întâmplă dacă vreau să folosesc fără parolă? Am învățat că mai multe parole înseamnă mai mult risc. În plus, parola va fi în plain_text în php. Există o opțiune de a omite parola în php-ul meu?
xogoxec344 avatar
drapel in
Nu știu despre mysql auth fără parolă. Ați putea explica de ce credeți că „mai multe parole înseamnă mai mult risc”? Unde ai invatat asta? Nu sunt puternic de acord.
xogoxec344 avatar
drapel in
aruncați o privire pe https://www.percona.com/blog/2019/11/01/use-mysql-without-a-password/ -> utilizați `IDENTIFIED VIA unix_socket;` în loc de o parolă și un utilizator Linux cu același nume se poate conecta fără a specifica o parolă.
Sam avatar
drapel in
Sam
Folosiți ssh în loc de parolă, iar cheile ssh sunt înaintea frazelor de acces.
xogoxec344 avatar
drapel in
modul în care vă asigurați conexiunea ssh este complet independent de modul în care vă conectați la mysql dintr-un script php care rulează pe aceeași mașină.
Sam avatar
drapel in
Sam
Mulțumesc, văd acum. Poate ar trebui să-mi bag creierul în cuptorul cu microunde. Haha

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.