Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Brak połączenia z MySQL
Forum PHP.pl > Forum > Przedszkole
Pifko
Witam
Mam problem z połączeniem PHP i Mysql po walidacji formularza, tzn wyskakuje mi taki komunikat:

 Brak połączenia z MySQLAccess denied for user 'system'@'localhost' (using password: YES)

probuje to rozwiązać ale nie daje już rady, wie ktoś co może być tego przyczyną?
thomson89
Co próbujesz zrobić z formularzem? Czy dane połączenia z serwerem są poprawne? Czy użytkownik którego używasz do łączenia z bazą ma uprawnienia, do tego co ma robić?
boro11
Masz zle dane do polaczenia z baza.
Pifko
Chce zarejestrowac uzytkownika i dodac go do bazy a uzytkownik chyba ma uprawnienia poniewaz nadawalem mu wszystkie prawa poprzez MySQL.
Ale podobnie mam z PHPMyAdmin tzn nie widzi mi wogole zadnych baz tworzonych poprzez klijenta MySQL.

do połączenia z bazą napisałem tak :
  1. define('db_user','root');
  2. define('db_password','system');
  3. define('db_host','localhost');
  4. define('db_name','sitename');
  5.  
  6. $dbc = @mysqli_connect(db_host, db_user, db_password) or die
  7. ("Brak połączenia z MySQL " .mysqli_connect_error() );
  8.  
  9.  
  10. //wybieramy bazę danych
  11.  
  12. mysqli_select_db($dbc,db_name);
  13.  
pedro84
Cytat
poprzez klijenta MySQL.

Pewnie dlatego, że nie wie co to 'klijent'....

Masz ewidentnie problemy z dostępem do MySQLa, na 99% użytkownik nie ma uprawnień.
Pifko
Nie wiem czy to o to chodzi :

GRANT SELECT ON moja_baza.tabelka TO system@localhost;

zaakceptowalo ale nadal to samo,

no i wydawało mi sie ze jesli bym nie mial uprawnien to w klijencie nie moglbym modyfikować baz
ale wszystko moge robic.
pedro84
Cytat(Pifko @ 17.07.2010, 23:22:39 ) *
Nie wiem czy to o to chodzi :

GRANT SELECT ON moja_baza.tabelka TO system@localhost;

zaakceptowalo ale nadal to samo,

no i wydawało mi sie ze jesli bym nie mial uprawnien to w klijencie nie moglbym modyfikować baz
ale wszystko moge robic.

Skoro chcesz rejestrować, to raczej INSERT nie SELECT.

PS... Co to jest 'klijent'? Bo poprzedniej sugestii nie zrozumiałeś jak widzę...
Pifko
oo racja INSERT jesli juz


klijent czyli wiersz polecen MySQL'a


kapuch
Cytat(Pifko @ 17.07.2010, 23:32:19 ) *
klijent czyli wiersz polecen MySQL'a

Hehe, a ty nadal swoje...
Pisze sie KLIENT.

Pokazesz wreszcie kod?
Czy boisz sie, ze ktos Ci go ukradnie?
Trudno zgadywac co ty tam napisales, bo tylko przez przypadek wyszlo ze nie uzywasz INSERT...trzeba ciagnac cie za jezyk?
Pifko
Oto ten kod do polaczenia z bazą:

  1.  
  2. if (isset ($errors)){ //jesli poprawnie wypelniony
  3. define('db_user','root');
  4. define('db_password','system');
  5. define('db_host','localhost');
  6. define('db_name','sitename');
  7.  
  8. $dbc = mysqli_connect(db_host, db_user, db_password) or die
  9. ("Brak połączenia z MySQL " .mysqli_connect_error() );
  10.  
  11.  
  12. //wybieramy bazę danych
  13.  
  14. mysqli_select_db($dbc,db_name);
  15.  
  16. //-----------------------------------------------------------------------------
  17.  
  18. //tworzymy zapytanie
  19. $q = "insert into users (first_name, last_name, email, pass, registration_date) values ('$fn', '$ln', '$e', SHA1('$p'), NOW() )" ;
  20.  
  21. $r = @mysqli_query($dbc,$q);
  22. //wykonuje zapytanie
  23. if ($r){
  24. echo ("<h1>Dziękujemy</h1><br>Zostałes zarejestrowany.Będziesz mógł sie zalogować!<br>");
  25. }else{
  26. echo ("<h1>Błąd systemu</h1>Nie zostałes zarejestrowany z powodu awarii systemu. Przepraszamy");
  27.  
  28.  
  29. //komunikat uruchumieniowy
  30. echo "<p>" .mysqli_error($dbc) ."<br>Zapytanie: " .$q ."<br>";
  31. }
  32. }
  33.  
  34.  

PLik konfiguracyjny config.inc.php wyglada tak:
  1. <?php
  2.  
  3. /* Servers configuration */
  4. $i = 0;
  5.  
  6. /* Server: localhost [1] */
  7. $i++;
  8. $cfg['Servers'][$i]['verbose'] = 'localhost';
  9. $cfg['Servers'][$i]['host'] = 'localhost';
  10. $cfg['Servers'][$i]['port'] = '3307';
  11. $cfg['Servers'][$i]['socket'] = '';
  12. $cfg['Servers'][$i]['connect_type'] = 'tcp';
  13. $cfg['Servers'][$i]['extension'] = 'mysql';
  14. $cfg['Servers'][$i]['auth_type'] = 'config';
  15. $cfg['Servers'][$i]['user'] = 'root';
  16. $cfg['Servers'][$i]['password'] = 'system';
  17. $cfg['Servers'][$i]['AllowNoPassword'] = true;
  18.  
  19.  
  20.  
  21.  
  22. /* End of servers configuration */
  23.  
  24. $cfg['DefaultLang'] = 'en-utf-8';
  25. $cfg['ServerDefault'] = 1;
  26. $cfg['UploadDir'] = '';
  27. $cfg['SaveDir'] = '';
  28.  
  29.  
  30. ?>
kapuch
Co to jest to isset($errors) questionmark.gif?
dokladnie chodzi mi o zmienna $errors, skad ja bierzesz?

Poza tym usun @ przed mysqli_query, bo maskujesz bledy, a pozniej nie wiesz co jest zle.
krzysztof_kf
Wejdź w Uprawnienia > Opis użytkownika > Edytuj root > zmień host z % na localhost .
Pifko
empty($errors) -> pod zmienną errors mam napisane skrypty do obsługi błędów formularza, czyli jesli tych bledow nie ma to wykonywane jest polaczeniez bazą
  1. if (isset ($_POST['submitted'])){
  2. $errors = array(); //obsluga bledow
  3.  
  4. //sprawdzam imie
  5. if (empty($_POST['first_name'])){
  6. $errors[] = "Zapomniales podac imie";
  7. }else{
  8. $fn = trim($_POST['first_name']);
  9. }
  10.  


  1. krzysztof_kf a gdzie to znależć moge takie opcje?


W drugiej linijce kodu zauwazylem blad dlatego poprawiam
  1. if (empty ($errors)){ //jesli poprawnie wypelniony
kapuch
no wlasnie o to mi chodzilo, ze isset sprawdza czy dana zmienna jest ustawiona i z tymi errorami nie mialo by to sensu, poniewaz dzialalo by tylko wtedy gdyby byly bledy, a powinno na odwrot czyli !isset($errors).
Albo empty.

Te opcje znajdziesz w phpmyadmin po wejsciu w uprawnienia badz privilages.
Pifko
a pozatym to zauwazylem cos bardzo dziwnego tzn usunolem caly kod PHP ze strony zapisalem uruchomilem i nic sie nie zmienilo jest dalej tak jakby ten kod byl...

tak jakby nic nie reagowalo na moje zmiany :/

a jesli chodzi o uprawnienia w pma to mam ustawione 2 pola

Użytkownik Host Hasło Globalne uprawnienia Nadawanie
root 127.0.0.1 Tak ALL PRIVILEGES Tak
root localhost Tak ALL PRIVILEGES Tak

Teraz pokazuje mi przegladarka cos takiego :

Warning: mysqli_connect() [function.mysqli-connect]: (42000/1049): Unknown database 'sitename' in C:\www\www\htdocs\Larry Ullman\doc1.php on line 106
Brak połączenia z MySQL Unknown database 'sitename'

a pma dalej nic nie widzi
krzysztof_kf
Edytuj uprawnienia użytkownika Dowolny i zaznacz dane : SELECT, INSERT, UPDATE, DELETE, FILE,
Pifko
Wiec tak, na glownej stronie http://localhost jak wchodze do pma w zakladce Tools to bazy sa widoczne
natomiast w zakladce Your Projects nie są widoczne robilem tak jak pisałes ale nic nie pomaga sad.gif

PMA widzi juz bazy
ale PHP nadal nie widzi teraz mi pokazuje : Table 'sitename.users' doesn't exist :/
irvis
Witam smile.gif
odświeżam temat, bo mam podobny problem. Tzn, błąd "1049 : Unknown database"
Działam na Win7, skrypty odpalam na localhoscie w tym celu używam VertrigoServ 2.21.

oto kody skryptów:

    najpierw plik config.php :
    1. <?php
    2.  
    3.  
    4. $AbsoluteURL = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
    5. $dirCat = dirname($_SERVER['PHP_SELF']);
    6. $AbsoluteURL .= $_SERVER['HTTP_HOST'];
    7. $AbsoluteURL .= $dirCat != '\' ? $dirCat : "";
    8. $slash = substr($AbsoluteURL, -1);
    9.  
    10. $NewURL = $slash != '/' ? $AbsoluteURL.'/' : $AbsoluteURL;
    11.  
    12.  
    13.  
    14. define('DB_SERVER', 'localhost');
    15. define('DB_USERNAME', 'root');
    16. define('DB_PW', 'vertrigo');
    17. define('DB_DB', 'supercms');
    18.  
    19.  
    20. define('SERVER_ADDRESS', $NewURL);
    21.  
    22.  
    23. define('DS', '/', true);
    24. define('ClassFolder', 'CLASS'.DS, true);
    25. define('ManagerFolder', 'CLASS'.DS.'Managers'.DS, true);
    26. //define('LogFolder', 'LOG'.DS, true);
    27.  
    28.  
    29. function __autoload($className) {
    30.  
    31. @include_once(ClassFolder.$className.".class.php");
    32. @include_once(ManagerFolder.$className.".class.php");
    33.  
    34. }
    35.  
    36. ?>


    teraz DatabaseManager.class.php
    1. <?php
    2.  
    3. class DatabaseManager {
    4.  
    5. static public function getConnection (){
    6.  
    7. $conn = @new mysqli(DB_SERVER, DB_USERNAME, DB_PW, DB_DB);
    8.  
    9. if ( mysqli_connect_errno() ){
    10.  
    11. $conn_errno = mysqli_connect_errno();
    12. $conn_error = mysqli_connect_error();
    13.  
    14. return "wystapil blad podczas laczenia z BD, err no [ $conn_errno ] : $conn_error";
    15.  
    16. } else {
    17.  
    18. $conn->query("SET NAMES 'utf8'");
    19. return "pomyslnie polaczono z BD =D ";
    20. }
    21. }
    22. }
    23.  
    24. ?>


    i na koniec index w którym to wszystko łącze:

    1. <?php
    2.  
    3. require_once("config.php");
    4.  
    5.  
    6. echo "</pre>";
    7. print_r(DatabaseManager::getConnection());
    8. echo "</pre>";
    9.  
    10.  
    11. ?>



to jest kod typowo testowy, żeby sprawdzić mechanizmy działania poleceń i łączenia się z BD.
w folderze z plikiem index.php mam owy plik supercms.sql probowalem go otwierac przez strone localhost/import - działa.
siedze i szukam juz od rana, co może być nie tak, w wiekszości postów na jakie trafiłem chodziło o niepoprawną nazwe bazy danych.
a u mnie nie widzę takiej niezgodności.
błąd z strony : "moj tekst + [ 1049 ] : Unknown database 'supercms' ".
jestem początkujący i nie mam pojęcia o co może chodzić, na pierwszy rzut oka wszystko jest ok, a jednak wywala błąd.
ktoś może pomóc? sad.gif

EDIT:
zapomniałem dodać, że pliki znajdują się w folderach. plik inddex, config i supercms są w folderze "głównym" a DatabaseManager.class.php w katalogu CLASS\Managers.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.