Настройка MacOS mysql5 под Snow Leopard
Мне удалось получить мою установку, все испортили, поскольку я новичок, и испортить - это то, чем я хорош.
1) Может ли кто-нибудь ссылаться на надежный набор инструкций по настройке для этого материала?
2) Могу ли я просто удалить и начать с нуля (пароли и все) через macports? Я попробовал и кучу каталогов mysql, застрявших после unistall, WTF!?
3) Где нужно mysqld.sock и какие параметры файла мне нужно применить, чтобы заставить его играть с php5 и apache2?
Он живет в /tmp или в /opt/local/var/run/mysql 5/?
Мне нужно настроить /opt/local/etc/php 5/php.ini? выбрать/локальные/вар/дб/php5/mysql.ini?/opt/local/etc/mysql5/my.cnf?
4) Я запустил > sudo -u mysql mysql_install_db5. Если я запустил его снова, это меня испортит?
Я запустил mysqladmin -u пароль root mypw и получил сообщение о том, что mysql не смог подключиться через сокет. Значит ли это, что мой пароль теперь установлен? Есть ли способ, который я могу сказать?
5) Синтаксис инструкции пароля изменяется с блога на блог. Является ли мой пароль "mypw" или mypw (без кавычек)? (Мой пароль на самом деле не mypw)
6) Каковы соответствующие команды для запуска и остановки mysql? Я НЕ хочу, чтобы он начинался с момента запуска моей машины.
Спасибо Джергасону, что чрезвычайно полезно.
Мне бы очень хотелось поддерживать совместимость с установкой mysql в macports, поскольку она ограничивает ущерб, который я могу сделать для своей машины.
Итак, выдающиеся вопросы сейчас...
1) Каково местоположение сокета по умолчанию для установки mysql для macports?
2) Каковы соответствующие команды для запуска и остановки mysql? Я НЕ хочу, чтобы он начинался с момента запуска моей машины. Некоторые блоги говорят, что использовать launchctl-load другие говорят sudo/path/mysql_safe5. Если вы не задали пароль (как я этого не намерен), вам нужно использовать параметры -user -p?
3) Каковы необходимые владельцы каталогов и разрешения для работы с mysql macports. Кажется, что macports не устанавливает ничего из этого.
Nerdling
Проверить/tmp для сокета mysql MacPorts
Не полезно. Как я уже говорил, я понимаю, что /tmp является местом по умолчанию для сокета. Моя проблема в том, что когда я пытаюсь запустить mysql, сокет не материализуется там и не появляется в /opt/local/var/run/mysql 5/. Это говорит мне, что у меня возникла проблема с запуском mysql, что означает, что с настройкой что-то не так. Что это может быть, я не знаю. Боюсь, что я не родился с априорным знанием таких вещей.
-ЧЕМ СПЕЦИФИЧЕСКИЙ каталог ДОЛЖЕН использовать сокет для установки mysql5 с использованием macports под Snow Leopard?
Если вы используете советы по 5 различным сайтам о том, как запускать mysql, и вы удивлены, что потеряли... ну, я просто оставлю это при попытке следовать только по одному сайту за раз и обратно все изменения перед переходом к следующему.
Не полезно. Я сделал именно то, что вы предлагаете начать. Как вы думаете, что я сделал, смешайте и сопоставьте инструкции из 5 блогов? Вот почему я спросил о чистых ударах. Я хотел знать, может ли изменение состояния от предыдущей установки повлиять на будущие "чистые" установки.
-Что в блоге SPECIFIC описывается подтвержденная для правильной установки процедура mysql5 с использованием macports под Snow Leopard.
Я думаю, что единственная проблема, с которой вы столкнулись с mysql в MacPorts (какая у вас проблема?) заключается в том, что у нее есть сокет, где вы его не ожидаете, и он использует конфигурацию по умолчанию.
Не полезно. Я тоже вижу мой оригинальный пост. Я думаю, что проблема заключается в том, как mysql запускается (или не запускается).
- У вас есть КОНКРЕТНЫЕ предложения по устранению проблемы?
Это должно было быть объяснено после завершения установки MacPorts.
Не полезно. Это было не так, или я не видел этого, если бы это было так. Может быть, потому, что я использовал Портикус.
-Вы можете быть более КОНКРЕТНЫМИ? В какой точке я должен был видеть сообщение WHAT?
Пожалуйста, смотрите ${prefix}/share/doc/mysql5/для идей и/или обратитесь в список разработчиков. Также подумайте о контакте с сопровождающим порта; они, вероятно, знают больше всего об этом, так как они управляют им.
Не полезно. RTM, Google - ваш друг, и все такое. Да, пошел туда первым. Хотя я признаю, что, возможно, что-то упустил из виду, поскольку я не склонен тратить дни на чтение плохо написанных документов, когда у меня есть другая работа, когда я уверен, что моя проблема простая.
- Если вы хотите дать мне КОНКРЕТНЫЙ документ, который я, возможно, упустил, ТО было бы полезно.
Я надеялся на какую-то простую, целенаправленную помощь, как то, что предоставил Джергазон. Я (и другие, читающие это) оцениваю готовность Джергасона передать свои знания, чтобы ускорить процесс обучения людей, новых для различных технологий. Для него знание является основополагающим, но для новичков это очень важно для экономии времени. Истинная оценка интеллекта - это понимание того, что технологические знания не являются априорными и что даже основная помощь очень помогает. Еще раз спасибо J-man.
Ответы
Ответ 1
Я только что установил mysql5 сам, и поскольку это всегда боль, я заметил процесс, за которым я последовал. Это было сделано на Leopard, но я полагаю, что процесс такой же на Snow Leopard и Lion. Он не отвечает на все исходные вопросы, но, по крайней мере, это что-то вроде руководства.
Установка Mysql
Сначала установите сервер mysql5 с помощью:
sudo port install mysql5-server
Просто установка mysql5
не устанавливает сервер.
Обратите внимание на вывод консоли, он содержит инструкции по настройке macports. Возможно, вы захотите скопировать и вставить его в текстовый файл. На этом основано следующее.
Вместо mysql5-server
вы можете использовать порт, например mysql55-server
, mysql56-server
, mariadb-server
или percona-server
, чтобы получить более новую версию mysql или fork. Если вы это сделаете, обратите внимание на вывод консоли, так как следующие инструкции основаны на mysql5-server
и должны быть настроены для использования правильных исполняемых файлов и путей.
Если это новая установка, настройте базу данных:
sudo -u _mysql mysql_install_db5
Это выводит некоторые общие инструкции, которые, как я считаю, не подходят для macports. На мой взгляд, лучшим способом загрузки mysql5 в качестве демона является использование метода macport:
sudo port load mysql5-server
Как и при запуске mysql5, это постоянно загружает его - он будет запускаться при загрузке. Чтобы остановить это позже:
sudo port unload mysql5-server
Если вы не хотите запускать его как демон, вы можете запустить его в командной строке:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Убедитесь, что он работает, войдя в командной строке:
mysql5 -u root -p
По умолчанию пароль пуст, поэтому просто нажмите клавишу ввода при появлении запроса. Чтобы установить пароль root:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Следуйте инструкциям по настройке php macports и внутренней установки php.
Настройка Macports PHP
Предположим, что у вас уже установлен и запущен macports php. Вам нужно установить php5-mysql
(или что-то вроде php54-mysql
в зависимости от того, какую версию php вы используете):
sudo port install php5-mysql
Это устанавливает драйверы mysql, mysqli и pdo.
Теперь загляните в каталог /opt/local/etc/php5
, если у вас еще нет файла конфигурации php.ini
, либо php.ini-development
, либо php.ini-production
до php.ini
. Теперь отредактируйте php.ini
и найдите соответствующие строки для добавления:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
и
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
и
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Если вы не хотите их настраивать, вы можете установить их явно в своем php script при подключении.
Если у вас возникли проблемы с подключением, вы можете посмотреть другие близлежащие настройки и сравнить с php.ini-development
и php.ini-production
, чтобы увидеть, что было изменено.
Затем используйте script ниже или что-то подобное тесту, который вы можете подключить с помощью php.
Настройка системы PHP
OS X php поставляется с поддержкой mysql и mysqli (но не pdo), поэтому все, что вам нужно сделать, это установить сокет macport unix. По умолчанию используется /opt/local/var/run/mysql5/mysqld.sock
. Найдите правильное место в /etc/php.ini
(если у вас его еще нет, скопируйте его из /etc/php.ini.default
), чтобы добавить:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
и
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Если вы не хотите их настраивать, вы можете установить их явно в своем php script при подключении.
Тест Script
Здесь php script, чтобы проверить, что он может подключиться. Очевидно, что вы обычно не используете корневую учетную запись в своих php-сценариях, поэтому сначала можете создать другую учетную запись mysql для тестирования соединения. Соединение PDO не будет работать для родного php, поскольку у него нет драйверов PDO.
<?php
$username = 'root';
$password = 'correct horse battery staple';
/* Try mysql: */
$connection = mysql_connect('localhost', $username, $password);
if ($connection === FALSE) {
echo "Error connecting using mysql.\n\n";
echo "Error ".mysql_errno().": ".mysql_error()."\n\n";
}
else {
echo "Connected using mysql.\n\n";
mysql_close($connection);
}
/* Try mysqli: */
$connection = mysqli_connect('localhost', $username, $password);
if ($connection->connect_error) {
echo "Error connecting using mysqli:\n\n";
echo "Error ".$connection->connect_errno.": ".$connection->connect_error."\n\n";
}
else {
echo "Connected using mysqli.\n\n";
$connection->close();
}
/* Try pdo:
* Won't work for the version of php supplied with OS X. */
try {
$pdo = new PDO('mysql:host=localhost', $username, $password);
echo "Connected using PDO.\n\n";
$pdo = null;
}
catch(PDOException $e) {
echo "Error connecting using PDO:\n\n";
echo "Error ".$e->getCode().": ".$e->getMessage()."\n\n";
}
Ответ 2
Я сам столкнулся с той же проблемой. Чтобы заставить MySQL работать, мне просто нужно было
sudo chmod -Rf 777 /opt/local/var/db/mysql5
Попытка выполнить sudo -u _mysql mysql_db5 не удалась, но я мог бы сделать
mysqladmin -u root password the_new_password
без проблем.
Если вы не хотите, чтобы MySQL запускался автоматически при включении машины, просто выполните следующее:
sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist
Затем для запуска/остановки MySQL:
старт:
sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper start
остановка:
sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper stop
Надеюсь, что это поможет.
Ответ 3
1) Hivelogic имеет большое пошаговое руководство по компиляции mysql для Snow Leopard из источника. На самом деле это не так сложно, и если вы сделаете это сами, вы узнаете, где это.
2) Вы должны просто запустить sudo port uninstall mysql5
. Он может кричать на вас о зависимостях. Если это так, вам придется сначала удалить их. Удаление MySQL должно удалить все настройки конфигурации, включая пароли.
3) Где нужно mysqld.sock и какие параметры файла мне нужно применить, чтобы заставить его играть с php5 и apache2? Расположение mysqld.sock менее важно, чем путь к нему. Вы указываете путь к mysqld.sock в файле php.ini. Если у вас есть файл php.ini в /opt/local/bin, вы установили версию php для macports. Вы можете использовать его, или можете использовать версию Apple по умолчанию. В любом случае вам нужно настроить файл php.ini, чтобы сообщить вашей php-установке, куда его использовать. В файле php.ini должна быть строка, в которой говорится
mysql.default_socket = <whatever>
Если его там нет, вы можете его добавить. Вы должны установить эту строку равным расположению вашего mysqld.sock. Мой выглядит так:
mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
Конфигурация вашего Apache
4) Я запустил > sudo -u mysql mysql_install_db5. Если я запустил его снова, это меня испортит? Я запустил mysqladmin -u пароль root mypw и получил сообщение о том, что mysql не смог подключиться через сокет. Значит ли это, что мой пароль теперь установлен? Есть ли способ, который я могу сказать? Если вы не смогли подключиться к сокету, ваш пароль не был установлен.
5) Синтаксис инструкции пароля изменяется с блога на блог. Является ли мой пароль "mypw" или mypw (без кавычек)? (Мой пароль на самом деле не mypw) Вам не нужны кавычки вокруг пароля в командной строке.
Ответ 4
Проверить/tmp для сокета mysql MacPorts.
Если вы используете советы по 5 различным сайтам о том, как запускать mysql, и вы удивлены, что потеряли... ну, я просто оставлю это при попытке следовать только по одному сайту за раз и обратно все изменения перед переходом к следующему.
Я думаю, что единственная проблема, с которой вы столкнулись с mysql в MacPorts (какая у вас проблема?) заключается в том, что у нее есть сокет, где вы его не ожидаете, и он использует конфигурацию по умолчанию. Это должно было быть объяснено после завершения установки MacPorts. Пожалуйста, см. ${prefix}/share/doc/mysql5/
для идей и/или обратитесь в список разработчиков.
Также подумайте о том, чтобы связаться с хранителем порта; они, вероятно, знают больше всего об этом, так как они управляют им.
Ответ 5
php.ini, используемый в командной строке, может отличаться от того, который используется apache
Вы можете проверить это с помощью
phpinfo.php
<?php
phpinfo();
?
выполнив
php phpinfo.php | grep php.ini
если он показывает
Configuration File (php.ini) Path => /opt/local/etc/php5
и тест script ответа Дэниела Джеймса (сохраненный как testconnect.php) также терпит неудачу
то вы можете исправить, создав символическую ссылку:
/opt/local/etc/php5>sudo ln -s /etc/php.ini php.ini
после этого тестовое соединение должно работать
php testconnect.php
Connected using mysql.
Connected using mysqli.
Connected using PDO.
Ответ 6
Я понял проблему. Несмотря на то, что Apache не запускался, по какой-то причине Apache блокировал запуск MySQL (и, следовательно, от создания сокета). (Да, странно?) До того, как я запустил установку, я выпустил команду, чтобы остановить apache, затем установка прошла плавно. Даже сейчас, прежде чем я запустил MySQL, я должен сначала сказать Apache (который не работает), чтобы остановить.
И только для записи, я знаю, что это не работает, потому что я получаю
"httpd (no pid file) не работает"
Я не запускаю его автоматически при запуске или в любом костном мозге.
Я попытаюсь написать прохождение, чтобы никто другой не мог пройти через эту BS.
Ответ 7
При установке php5 через macports пакет не приходит автоматически с расширением mysql, поэтому он не может подключиться к mysql через php (но вы, вероятно, можете с помощью командной строки).
Сначала проверьте, правильно ли работает ваш mysql:
mysqladmin5 -uroot -pYOURROOTPASSWORD ping
Если он жив, вы можете проверить все переменные на:
mysqladmin5 -uroot -pYOURROOTPASSWORD variables
Вы должны увидеть, что ваше местоположение "сокета" определено как
/opt/local/var/run/mysql5/mysqld.sock
Использование macports для установки отсутствующих компонентов за 2 минуты... вот как:
sudo port install php5-mysql
Чтобы использовать mysqlnd с локальным сервером MySQL, отредактируйте /opt/local/etc/php5/php.ini и установите
mysql.default_socket, mysqli.default_socket и pdo_mysql.default_socket
до /opt/local/var/run/mysql5/mysqld.sock
Затем перезапустите свой тип Apache:
sudo /opt/local/apache2/bin/apachectl -k restart
Теперь все должно быть правильно запущено. Надеюсь, что это поможет.