Невозможно подключиться к серверу MySQL с помощью MAMP или с помощью Сервера совместной работы.

Я создал базу данных с 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 и в результате получается "Не удалось подключиться к базе данных". Я делаю это правильно?

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

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

5 ответов

Решение

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

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

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

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

Вам не нужно устанавливать 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.

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

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

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

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

$db = mysql_connect("127.0.0.1:8889","root", "");

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

+

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

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

Другие вопросы по тегам