Teen nettisivua, johon tarvitsisin MySQL-tietokannan. En ole ennen luonut kantaa, joten miten tällainen tehdään? PHP.netin ohjeissa luki
mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
, mutta mistä tiedän, mitä mun pitää laittaa noihin kolmeen ensimmäiseen parametriin? Tuo luomani kannan nimi tulee kai tohon viimeiseen parametriin.
Niin siis sulla on jo tietokanta luotuna?
Riippuen siitä mihin olet sen tietokantasi luonut, täytyy sinun antaan ensimmäiseksi parametriksi tietokantapalvelimen osoite. Toiseksi ja kolmanneksi annat tunnuksen ja salasanan, jolla pystyt kirjautumaan tietokantapalvelimellesi ja viimeiseksi parametriksi annetaan sen tietokannan nimi, jota halutaan käyttää.
Edit. Jos sinulla käytössä esim. PHPMyAdmin, niin sama tunnus ja salasana kelpaa tuon mysqli-luokan kontruktorin parametriksi.
Ohjelmointiputkastakin löytää ihan hyviä oppaita: https://www.ohjelmointiputka.net/oppaat/opas.
Itse yleensä väsään kannat käyttäen PHPMyAdminia koska sillä se on helpompaa.
temu92 kirjoitti:
Itse yleensä väsään kannat käyttäen PHPMyAdminia koska sillä se on helpompaa.
Tuo on harvinaisen totta. Tosin ärsyttävä puoli on lyhyt istuntoaika, joten se kirjautuu ulos aina silloin, kun on hommat kesken.
Kyllä mäkin koetin käyttää PHPMyAdminia.
Virhe tietokantaan kytkeytymisessä (1045) Access denied for user 'my_user'@'web01.wesnet.local' (using password: YES)
SQL query: SET PASSWORD FOR ‘root’@'localhost’ = PASSWORD(‘MyNewPassword’); MySQL said: Documentation #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''localhost’ = PASSWORD(‘MyNewPassword’)' at line 1
Missä tuo tietokantapalvelimesi sijaitsee?
Ja ennen kuin pääset phpmyadminilla tietokantaasi käsiksi, se pitää olla luotuna, ja siihen liittyvät käyttäjät asetettuna.
Palvelin sijaitsee jossain freehostingcloud.comin uumenissa osoitteessa 10.10.10.3. Loin kannan tai alkuun kaksi taulua. Mites nuo käyttäjät asetetaan? Tai ehkä ne ovat jo paikoillaan, sillä loin taulut MyAdminin avulla.
Todennäköisesti käyttäjä on kirjautuessasi antamasi tunnus ja antamasi salasana juurikin samaisen käyttäjän salasana.
Nyt löytyi kohta, jossa pystyin luomaan käyttäjän. Toisaalta sille ei tullut mitään oikeuksia kantaan. Kuinka voin lisäillä niitä?
Et välttämättä mitenkään se riippuu ihan siitä, mitkä oikeudet sinulla on...
Edit. Voisit tietenkin asentaa koneellesi Apachen, PHP:n ja MySQL ja harjoitella sitä kautta MySQL:n käyttämistä PHP:llä.
Triton kirjoitti:
Edit. Voisit tietenkin asentaa koneellesi Apachen, PHP:n ja MySQL ja harjoitella sitä kautta MySQL:n käyttämistä PHP:llä.
Joskus koetin pystyttää Apachen, mutta en saanut sivuja näkyviin nettiin. Toisaalta osaan käyttää MySQL:ää PHP:n seassa, sillä tein sitä kolme kuukautta kesätöissäni. Tällöin talossa oli kuitenkin asiantuntija, joka auttoi ongelmissa ja kanta oli ollut käytössä varmaan jo vuosia. Ongelma on vaan siinä, miten saan kannan toimimaan, sillä en ole koskaan pystyttänyt tietokantaa ja antanut sen käyttäjille oikeuksia.
Nyt se kanta lähti toimimaan siten, että tein admin-käyttäjän ja annoin sille kaikki oikeudet. Tein myös user-käyttäjän, mutta en keksi, mitkä oikeudet hänelle kannattaa antaa. Vaihtoehdot ovat:
SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
REFERENCES
INDEX
ALTER
CREATE TEMPORARY TABLES
LOCK TABLES
CREATE VIEW
SHOW VIEW
CREATE ROUTINE
ALTER ROUTINE
EXECUTE
EVENT
TRIGGER.
Ainakaan pelkkä kolmen ensimmäisen oikeuden antaminen ei riitä, Access denied for user.
Toinen asia, joka mietityttää on kannan käyttäjän salasana, joka laitetaan lauseeseen $link = mysqli_connect( blaa, blaa, blaa ). Mulla on se saatavilla control panelin kautta, mutta se pitäisi saada myös PHP-koodiin. En tiedä toistaiseksi muuta tapaa kuin kovakoodata se muuttujaa, mutta tämä tuntuu huonolta vaihtoehdolta, sillä voin joskus muuttaa sitä control panelin kautta.
Jaska kirjoitti:
Tein myös user-käyttäjän, mutta en keksi, mitkä oikeudet hänelle kannattaa antaa.
Jos kaikki kyselyt ovat peräisin omasta koodistasi ja luotat koodin bugittomuuteen, erillinen käyttäjänimi ei välttämättä ole tarpeen.
Jaska kirjoitti:
En tiedä toistaiseksi muuta tapaa kuin kovakoodata se [salasana] muuttujaa, mutta tämä tuntuu huonolta vaihtoehdolta, sillä voin joskus muuttaa sitä control panelin kautta.
Mietipä hetki ihan järkevästi, mikä on salasanan tarkoitus. Jos salasanan voisi hakea automaattisesti tietokannasta, mitä hyötyä sellaisesta olisi?
OK, no tietysi! *Facepalm*
Metabolix kirjoitti:
Jaska kirjoitti:
Tein myös user-käyttäjän, mutta en keksi, mitkä oikeudet hänelle kannattaa antaa.
Jos kaikki kyselyt ovat peräisin omasta koodistasi ja luotat koodin bugittomuuteen, erillinen käyttäjänimi ei välttämättä ole tarpeen.
En ainakaan itse lähtisi luottamaan oman koodini bugittomuuteen, joten tällöin root-käyttäjän oikeudet ovat varsin riskialttiit. Uskoisin, että oikeudet SELECT-, UPDATE-, INSERT- ja DELETE- kyselyihin riittää... Ainakaan itse en ole varsinaisen ohjelman puolella muuta tarvinnut.
Aihe on jo aika vanha, joten et voi enää vastata siihen.