Невозможно подключиться к серверу MySQL с помощью MAMP или с помощью Сервера совместной работы - PullRequest
1 голос
/ 05 июня 2011

Я создал базу данных с MySQL Workbench, и теперь мне нужно получить к ней доступ. Поэтому я написал скрипт php для доступа к нему:

<? 
    $db = mysql_connect("127.0.0.1:3306","root", "");

    if (!$db){
        echo "Could not connect to database";
        exit();
    }

    $db_name = "pfc_db";
    if (!mysql_select_db($db_name, $db)){
        die ("Could not select database");
    }

    $sql=mysql_query("select * from CAPAS");
    while($row=mysql_fetch_assoc($sql)){
        $output[]=$row;
        if (isset($output)){
            echo "yes";
            echo $output[0];
        }
        else{echo "no";}
    }
    mysql_close();

?>

У меня есть сомнения по поводу MAMP и MySQL Community Server, и мне нужно подтолкнуть правильный путь. Я установил MAMP на моем Mac и переключил порты на mysql по умолчанию 3306. Я поместил тестовый скрипт PHP в папку «Api», которую я создал в htdocs. Поэтому, чтобы попробовать это, я набираю в своем браузере http://127.0.0.1/api/test.php, и в результате получается «Не удалось подключиться к базе данных». Я правильно делаю?

А как насчет Сервера совместной работы? Это лучше чем MAMP? Должен ли он работать для работы MAMP? Могу ли я просто использовать Сервер совместной работы? Если так, где я должен разместить сценарии PHP? Какая папка? Потому что, когда я пытаюсь выполнить тот же тест с Сервером совместной работы, вместо отображения сообщения об ошибке браузер начинает загружать скрипт php в мою папку загрузок. Почему так происходит?

Как вы можете заметить, я немного запутался в этих серверных вещах, и мне нужна помощь, чтобы разобраться.

Ответы [ 5 ]

5 голосов
/ 05 июня 2011

Вам не нужно устанавливать MySQL Community Server. MAMP уже поставляется с MySQL.

Вам необходимо выводить более конкретные ошибки в коде с помощью функции mysql_error().

if (!$db){
    echo "Could not connect to database" . mysql_error();
    exit();
}

$db_name = "pfc_db";
if (!mysql_select_db($db_name, $db)){
    die ("Could not select database" . mysql_error());
}

mysql_error вернет сообщение об ошибке из MySQL.

0 голосов
/ 07 апреля 2016

Я столкнулся с этой проблемой и исправил ее, используя порт TCP / IP по умолчанию вместо порта сокета.

Так что в моем случае вместо 3306 я использовал 8889

$db = mysql_connect("127.0.0.1:8889","root", "");
0 голосов
/ 22 января 2014

Это сработало для меня

sudo mkdir / var / mysql sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

0 голосов
/ 07 июня 2011

Ну, я сам себе отвечу, что если кто-то столкнется с той же проблемой.

Ошибка пароля произошла из-за того, что у меня было две установки mysql на одном компьютере, поэтому я проверял пароли в одной из них, а браузер смотрел на другую.

Поэтому, если у вас есть проблемы с доступом к паролю, убедитесь, что у вас не установлено два mysql, а также проверьте файл config.inc.php

Я также изменил TCP / IP с помощью сокетного соединения, что повышает скорость, если вы используете локальный хост в качестве сервера.

0 голосов
/ 06 июня 2011

Следуя ответу, который я давал пользователю 775263, я получаю эту таблицу пользователей:

+

--------------------+------+----------+
| Host               | User | Password |
+--------------------+------+----------+
| localhost          | root |          |
| SquirrellJoe.local | root |          |
| 127.0.0.1          | root |          |
| ::1                | root |          |
| localhost          |      |          |
| SquirrellJoe.local |      |          |
+--------------------+------+----------+

Как видите, любой из пользователей имеет любой установленный пароль. Но потом я обнаружил, что в bin / phpmyadmin есть скрипт config.inc.php, где есть следующие предложения:

$cfg['Servers'][$i]['auth_type']     = 'config';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = 'root';      // MySQL user
$cfg['Servers'][$i]['password']      = 'root';          // MySQL password (only needed

Я снова попытался соединиться с $db = mysql_connect("127.0.0.1:3306","root", "root");, и соединение прошло успешно. Почему таблица пользователей в командной строке mysql не отражает это? Это нормально? Должен ли я изменить это?

А потом я сталкиваюсь с другой проблемой. Он не может выбрать базу данных 'pfc_db', которую я создал на MySQL Workbench. Я получаю сообщение об ошибке Неизвестная база данных 'pfc_db' . Однако, когда я набираю mysql> show databases;, упомянутая БД появляется в таблице:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| pfc_db             |
| test               |
+--------------------+

Так в чем здесь проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...