Рейтинг:0

Доступ к Mysqli запрещен, используя сокет UNIX

флаг in
Sam

Я пытаюсь изучить PHP и настраиваю соединение с базой данных.
В Mysql Workbench я создал базу данных с именем php и создал таблицу. Затем я создал учетную запись «sam» @ «localhost» (я использую рабочий стол Ubuntu и Сэм является результатом кто я ) с auth_socket, разрешено ВСЕ на . , и когда я нажимаю ctrl+alt+T и ввод mysql и нажмите войти , я могу успешно войти в систему.
Теперь я последовал https://www.php.net/manual/en/mysqli.quickstart.connections.php , и попытался использовать сокет, мне не удалось.

13.08.2021 16:54:35 [ошибка] 1363#1363: *11 FastCGI отправлено в stderr: «Сообщение PHP: Предупреждение PHP: mysqli::__construct(): (HY000/1698): Доступ запрещен для пользователя 'sam '@'localhost' в /var/www/php/my2.php в строке 3PHP-сообщение: Предупреждение PHP: main(): не удалось получить mysqli в /var/www/php/my2.php в строке 5" при чтении заголовок ответа от восходящего потока, клиент: 127.0.0.1, сервер: _, запрос: «GET /my2.php HTTP/1.1», восходящий поток: «fastcgi://unix:/var/run/php/php7.4-fpm. носок:", хост: "localhost:803"

И вот мой код. <?php

$mysqli = новый mysqli("localhost", "sam", Null, "php");

эхо $mysqli->host_info . "\п";

Вывод ничего в браузере.

Тогда я попробовал это.

<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>

Выход Не удалось подключиться: доступ запрещен для пользователя «sam» @ «localhost»
С журналом

13.08.2021 16:59:17 [ошибка] 1363#1363: *13 FastCGI отправлено в stderr: «Сообщение PHP: Предупреждение PHP: mysqli::__construct(): (HY000/1698): Доступ запрещен для пользователя 'sam '@'localhost' в /var/www/php/mysqli.php в строке 10" при чтении заголовка ответа из восходящего потока, клиент: 127.0.0.1, сервер: _, запрос: "GET /mysqli.php HTTP/1.1", вверх по течению: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", хост: "localhost:803"

у меня нет пароля для пользователя Сэм на майскл.

MariaDB [mysql]> выберите пользователя, пароль от пользователя;
+-----------+-------------------------------------- ------+
| пользователь | пароль |
+-----------+-------------------------------------- ------+
| корень | |
| кто-то | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| кто-то | *9B8A3238012965AC630589D859535EA0B7C231A7 |
| кто-то | *AF411B6C73B3AC3A2316A309A71758175CC14FEE |
| кто-то | *D76A454D84260E84578F09915624F275F3D0E08B |
| Сэм | |
+-----------+-------------------------------------- ------+
6 рядов в сете (0,001 сек)

Я изменил фактическое имя пользователя на кого-то, чтобы защитить конфиденциальность. Ты это видишь Сэм не иметь пароля.

Рейтинг:0
флаг in

Используйте свой Mysql Workbench, чтобы установить пароль для пользователя Сэм и используйте этот пароль для подключения к библиотеке mysqli. Я не знаю, есть ли в Mysql Workbench возможность перехода по клику, если нет или если вы предпочитаете способ SQL, используйте что-то вроде:

СОЗДАЙТЕ ПОЛЬЗОВАТЕЛЯ 'sam'@'localhost', ИДЕНТИФИЦИРОВАННОГО 'choose_a_safe_password'
Sam avatar
флаг in
Sam
Что делать, если я хочу использовать без пароля? Я узнал, что больше паролей означает больше риска. Кроме того, пароль будет в виде простого_текста в php. Есть ли возможность опустить пароль в моем php?
xogoxec344 avatar
флаг in
Я не знаю об авторизации mysql без пароля. Не могли бы вы объяснить, почему вы думаете, что «больше паролей означает больше риска»? Где ты этому научился? Я категорически не согласен.
xogoxec344 avatar
флаг in
взгляните на https://www.percona.com/blog/2019/11/01/use-mysql-without-a-password/ -> использовать `IDENTIFIED VIA unix_socket;` вместо пароля, и пользователь linux с таким же именем может подключиться без указания пароля.
Sam avatar
флаг in
Sam
Вы используете ssh вместо пароля, а ключи ssh предшествуют парольным фразам.
xogoxec344 avatar
флаг in
то, как вы защищаете свое ssh-соединение, полностью не зависит от того, как вы подключаетесь к mysql из php-скрипта, работающего на том же компьютере.
Sam avatar
флаг in
Sam
Спасибо, теперь вижу. Может, мне стоит засунуть свой мозг в микроволновку. Ха-ха

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.