Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток. Помогите новичку разобраться с работой сервера. Установил у себя на компьютере Apache, PHP и MySQL 5.1.39. Апаче и PHP работают. Установил MySQL в папку не по умолчанию, а на диск D:\. установил пароль на пользователя root. Для тестирования работы прописал простейший скрипт, указанный в рекомендациях.
<?php
$dblocation = "127.0.0.1";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "server"; //ВВЕДИТЕ ПАРОЛЬ root пользователя,
//введенный при установке MySQL
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
echo "<p>Сервер MySQL не доступен!</p>";
exit();
}
if (!@mysql_select_db($dbname,$dbcnx))
{
echo "<p>База данных, не доступна!</p>"; exit();
}
$ver = mysql_query("SELECT VERSION()");
if(!$ver)
{
echo "<p>Ошибка в запросе</p>"; exit();
}
echo mysql_result($ver, 0);
?>
при запуске через firefox получаю сообщение об ошибке
Сервер MySQL не доступен!
зато, если прописать в файле настроек my.ini в секции [mysqld]
[mysqld]
skip-grant-tables
на выходе имеем нормальный результат.
хотя при работе с MySQL через клиента вхожу с паролем "server" и ни каких проблем. Какая то роблема с именами и правами чтоли?? Помогите разобраться. Спасибо.
Неактивен
вместо $dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
напишите $dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd) or die(mysql_error());
Тогда вместо информативной записи "Сервер MySQL не доступен!" вы получите сообщение об ошибке.
Неактивен
Спасибо за совет вот ошибка: "client does not support authentication protocol requested by server; consider upgrading MySQL client"
(клиент не поддерживает опознавательный протокол, который требует сервер; считайте модернизацию клиентом MySQL)
Правда от этого понятнее не стало и что с этим делать.
Неактивен
Как раз наоборот, стало понятно
Если возникает ошибка (Client does not support autentification protocol request by server; consider upgrading MySQL client), клиент (то есть ваша программа) не поддерживает требуемый сервером протокол.
Эту ошибку можно исправить, установив пароль старого формата:
SET PASSWORD FOR user@host = OLD_PASSWORD('password');
Рекомендую посмотреть статью http://sqlinfo.ru/articles/info/11.html
Неактивен
Нет фигня какая то. менял пароли на root, создавал пользователя с административными правами и его пароли менять пробывал толку нет. Я думаю не может ли быть изза неправильной настройки файла My.ini ?
Неактивен
Вы пароль старого образца установили?
Неактивен
Спасибо за совет. все заработало, только почему то не с первого раза. Именно так забивал пароль, сработало только раза с 4го, наверное что-то не так писал. Спасибо.
Еще Вопрос один: Если я меняю настройки в файле my.ini, как перезапустить виртуальный сервер не перегружая комп? Изменения вступают в силу только после того как перезагружаю комп. Пробывал перезагружать Apache через выход потом пуск, через рестарт. Не получается, точнее работают старые настройки. Каждый раз перезагружать комп в лом.
Неактивен
Если у вас винда, то Пуск --> Настройка --> Панель управления --> Администрирование --> Службы
В них ищите MySQL и перезапускаете.
Неактивен
Да тяжел путь познания...
Следующая проблема возникла при тестировании базы. Есть вот такой скрипт для проветки работы MySQL
<?
Error_Reporting(1+2+4);
define("DBName","testbase");
define("HostName","localhost");
define("UserName","root");
define("Password","server");
$dbcnx = @mysql_connect(HostName,UserName,Password);
if(!$dbcnx)
{ echo "Не могу соединиться с базой ".DBName."!<br>"; exit; }
// Создаем таблицу test. Если такая таблица уже есть, сообщение об ошибке будет
// подавлено, т.к. используется "@"
@mysql(DBName,"create table test(id int,a text)");
// Вставляем в таблицу 10 записей
for($i=0; $i<10; $i++)
{ $id=time();
mysql(DBName,"insert into test(id,a) values($id,'Строка $i!')");
}
// Выводим все записи
$r=mysql(DBName,"select * from test");
for($i=0; $i<mysql_numrows($r); $i++)
{ $f=mysql_fetch_array($r);
echo "$f[id] -> $f[a]<br>\n";
}
?>
так вот, проблем с пользователем нет, но при выводе не пигет русские буквы, а сплошные вопросики. Решал проблему так: http://www.opennet.ru/base/dev/mysql_ru … m.txt.html
и еще так http://verlihub.aliki.ru/index.php?titl … 1%8B%D0%BA
команда ALTER DATABASE имя_базы CHARSET cp1251;
прошла но не помогла
Вариант 1 тоже не принес результата
во втором варианте не знаю что такое lua-скрипт, где каталог $VERLIHUB_CFG/scripts.
В третьем варианте не знаю где найти файл cmysql.cpp и как сделать сделать make и make install
А для четвертого варианта не хватает файла dbconfig
Вообщем больше вопросов чем ответов. В конечном итоге может грохнуть этот вариант MySQL и установить руссифицированный, если есть??? Может ктото решал такую проблему и знает как с ней бороться. Спасибо.
Неактивен
См FAQ пункт 3 и 8
Скорее всего в вашем случае будет достаточно выполнить в скрипте "SET NAMES cp1251", но я всё-таки рекомендую вам прочитать статьи из 3го пункта. Думаю не пожалеете потраченного времени.
P.S. Команда ALTER DATABASE имя_базы CHARSET cp1251; изменила дефолтную кодировку базы данных. Это та кодировка, которая используется при создании таблицы, если вы не указываетет явно кодировку для создаваемой таблицы. Соответственно на уже созданные таблицы эта команда никак не повлияет.
Неактивен
Cпасибо за ответ. После удаления базы database и последующей ее создания все заработало как положено в каждой строке русские буквы. А я по незнанию долбал в той старой базе. Спасибо Vasya.
Неактивен