Database
Minulla on tämä sivustoni yhä rakenteilla, olen nyt ekat versiot kirjautumisesta rakentanut, PHP avulla, mutta tuli tilanteita turvallisuus tarkistusten kohdalla jolloinka MySQL on parempi kuin tiedostoihin tallentaminen, tälläinen tilanne tuli kun alan laskemaan kuinka monta kirjautumis yritystä on jo kokeiltuna.
Onko teillä jotain suomenkielistä linkkiä, jossa olisi neuvoja MySQL käyttöön, tarkoitus että sama databasea käytettäisiin sekä PHP että JAVA ohjelmasta, jotta sitten voin varmistaa mitä käyttäjiä palvelimeen pyrkii ja joilla on oikeuksia käyttää sivustoa.
Eli ensimmäinen on tämä databasen installointi palvelimeen, minä olen jo yrittänytkin nuodattaa googlen neuvoja ja olen asentanut kolme pakettia Ubuntu palvelimeen
sudo apt-get install mysql-server mysql-client php5-mysql
Riittävätkö nuo alkuun, minulla on tarve siis käyttäjätiedot tallentaa databaseen, tätä databasea sitten luetaan JAVA ja PHP käsin.
JAVA:lla voi poistaa käyttäjiä ja muuttaa asetuksia, ja PHP varmistaa käyttäjän ja lisää uusia käyttäjiä.
Databaseen ei saa olla mitään pääsyä netistä käsin, vaan kaikki databasen toiminta tulee tapahtua serverin puolelta, PHP ja JAVA käsin.
Database on kuulemma tosi nopeata oppia, mutta database ohjeet ovat minusta varsin mittavat ja sisältävät aika vaikeita englanninkielisiä käsitteitä.
En haluaisi käyttää phpmywebmin vai mikäs se nyt oli, tahtoisin koodaamalla lisätä kaikki kentät ja alustaa databasen.
Ottaisin mielelläni vastaan kaikenlaista pohdintaa helpottavaa lausetta, ennenkuin sitten testaan PHP puolella MySQL testejäni.
------
kpzpt kirjoitti:
sudo apt-get install mysql-server mysql-client php5-mysql
Tarvit vielä Javaa varten JDBC-ajurin, libmysql-java
kpzpt kirjoitti:
Databaseen ei saa olla mitään pääsyä netistä käsin, vaan kaikki databasen toiminta tulee tapahtua serverin puolelta, PHP ja JAVA käsin.
Oikein. On todennäkösesti oletusasetus, mut tosiaan kantsii laittaa bindaamaan se vaan localhostiin.
PHP ja database
Minulla on nyt asennettuna mysql server client ja php ja java kirjastot.
Lisänä asensin mysql-query-browserin, tai jotain noin.
Nyt sitten alan testaamaan näitä PHP koodi pätkiä mitä netti on täynnä.
Tässä heti ensimmäiseen riviin pysähtyy minun koodini, ei virheilmoitusta, eikä mitään muutakaan, mutta tämän rivin jälkeen ei PHP koodi enää toimi ?
$con = mysql_connect("127.0.0.1","root","salasana"); tai $con = mysql_connect("localhost","root","salasana");
Laitoin tuon rivin jälkeen vielä echo "Näkyykö!"; rivin mutta, ei enää tulostu ?
Toivottavasti en ihan joka rivin kohdalla joudu kyselemään neuvoja ;)
------
ini_set("error_reporting", E_ALL | E_STRICT);
Ei virheilmoitusta
Ei virheilmoitusta, mutta koodin kulku pysähtyy yhä tuohon samaan mainittuun riviin ?
Mainitun rivin jälkeen ei enää echo ""; tulosteet kirjoita selaimeen ?
ini_set("error_reporting", E_ALL | E_STRICT); echo "<br>database ok"; $con = mysql_connect("127.0.0.1","root","salasana"); echo "<br>database ok2"; if (!$con) { die('Could not connect: ' . mysql_error()); } echo "<br>database ok3"; if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; } else { echo "Error creating database: " . mysql_error(); }
Ainoastaan 'database ok' tulostuu selaimeen ?
Edit. lisänä huomasin että nuo mysql_connect ("","","") sulkujen sisäiset arvot voivat olla mitä tahansa, ja aina koodin kulku pysähtyy riviin ?
------
Heh!
Tässä näkee mikä peukalo olen tietokoneen säätelyssä, vaikka kokemusta on jostain -85 lähtein, tässä minä huvikseni käynnistin tietokoneen uudelleen ja näin sitten pääsin mystisestä pysähdyksestä eteenpäin, ilmeisesti mysql restart ei ollut jostain syystä riittävää, jokin osa Ubuntua täytyi uudelleen käynnistää, jotta MySQL toimisi ?
------
Tässä on nyt sitten kotikoneessa toimiva PHP testi esimerkki, jota täytyy hieman jalostaa omiin tarpeisiin.
Minulla on siis tarve tallentaa käyttäjätiedot mysql databaseen.
UserName
Password
Email
FirstName
LastName
AppletKäynnistysID
+ Jotain muuta vielä myöhemmin.
Voisinko muutamia opiskeluja helpottavia mietteitä vastaanottaa, databasea käytetään PHP ja serverin JAVA APPLICATION ohjelmissa, database tallentaa siis käyttäjätiedot, joista haetaan lupa Appletin käynnistämiseen ja APPLETKÄYNNISTYSID.
Kummastelen kuinka turvallisuus kohdat rakennetaan, esim. ->
Kuinka säädetään, max kyselyt päivässä.
Kuinka estän että jokin tietty IP ei ryhdy luomaan lukemattomia käyttäjiä.
Jos sitten näitä testi databaseja haluan myöhemmin deletoida, niin, riittääkö kun deletoin kansion /var/lib/mysql/XXXXXX joka kuvaa databasen nimeä, tuhoutuuko tällöin kaikki database tiedot varmasti ?
Kuinka säädän mysql käyttöön esim, 128m ram muistia, mutta ei sen enempää.
Täytyykö minun luoda kokonaan uusi database jos haluan liittää myöhemmin uuden kentän, esim KÄYNNISTYSKERRAT int, lienee ilmeisesti että Databasea voi myöhemmin laajentaa uusilla kenttä arvoilla ?
------
kpzpt kirjoitti:
Jos sitten näitä testi databaseja haluan myöhemmin deletoida, niin, riittääkö kun deletoin kansion /var/lib/mysql/XXXXXX joka kuvaa databasen nimeä, tuhoutuuko tällöin kaikki database tiedot varmasti ?
Älä missään tapauksessa poistele mitään tiedostoja. Tuota varten SQL:ssä on DROP DATABASE.
kpzpt kirjoitti:
Kuinka säädän mysql käyttöön esim, 128m ram muistia, mutta ei sen enempää.
Mun tietääkseni missään ei oo mitään yhtä asetusta, jolla sais määrätä muistinkäytön, mut jos tsekkaat MySQL:n asetustiedoston (arvatenki /etc/mysql/my.cnf tai /etc/my.cnf), niin siellä on useampia buffer- ja pool-asetuksia, mitä voi maun mukaan säätää.
kpzpt kirjoitti:
Täytyykö minun luoda kokonaan uusi database jos haluan liittää myöhemmin uuden kentän, esim KÄYNNISTYSKERRAT int, lienee ilmeisesti että Databasea voi myöhemmin laajentaa uusilla kenttä arvoilla ?
Sulla on muuten varmaan käsitteet database ja table hiukan sekasin. Ensimmäisen sisällä on useampi jälkimmäisiä. Mut joo, databaseen voi toki luoda uusia tauluja (CREATE TABLE), ja olemassaoleviin tauluihin voi luoda uusia sarakkeita (ALTER TABLE).
Database!
Nuo PHP esimerkit tuntuvat toimivan ihan ok, täytyy viikonlopun aikana testata loputkin kohdat joita PHP rutiineihin sitten asennan, kiitosta avusta !
------
Java JDBC
package main2; import java.sql.DriverManager; public class Connection { public static void main(String[] args) { DB db = new DB(); Connection conn=db.dbConnect ( "jdbc:mysql://localhost:3306/my_db", "root", "salasana" ) ; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } } class DB { public DB() { // } public Connection dbConnect ( String db_connect_string , String db_userid , String db_password ) { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); //$NON-NLS-1$ Connection conn = ( Connection ) DriverManager.getConnection ( db_connect_string, db_userid, db_password ); System.out.println("connected"); //$NON-NLS-1$ return conn; } catch (Exception e) { e.printStackTrace(); return null; } } };
Tämä koodi palauttaa virheilmoituksen ->
java.lang.ClassCastException: com.mysql.jdbc.JDBC4Connection cannot be cast to main2.Connection at main2.DB.dbConnect(Connection.java:27) at main2.Connection.main(Connection.java:10)
Tämä koodi on tarkoitettu liittymään saman PHP:n rakentamaan Databaseen "my_db" miksi ei toimi ?
------
Mod. vaihtoi oikeat kooditagit.
kpzpt Edit.
Tämäkin oli aika noob ongelma, Java luokka oli nimetty väärin, "Connection", koetin "Connection123" nimellä ja lähti toimimaan..
------
Kumma ettei kukaan ole tarjonnut putkan MySQL-opasta. Itse ainakin opin sen avulla SQL:n aikoinaan.
https://www.ohjelmointiputka.net/oppaat/opas.
MySQL opas!
Ongelmana oli lähinnä MySQL installointi ja asettaminen käyttöön, sekä PHP että Java puolella, aikaisemmat testit olivat päättyneet siihen että connectit databaseen eivät toimikkaan !
------
Olen nyt päätynyt lukemaan w3schools mysql opasta, ja se vaikuttaakin tähän käyttäjä nimien tallentamiseen varsin kattavalta, mutta, englannin kielinenhän w3schools tietysti harmi kyllä on.
Yritän viikonlopun aikana ja viimeistään ennen keskiviikkoa asettaa tuon kirjautumisen tuonne palvelimeeni, kyselen sitten näitä typeriä kysymyksiäni täällä putkassa, kiitosta vaan näin ennakkoon.
------
Englanti on kyllä hyvä opetella. Joihinkin asioihin löytyy jonkun verran dokumentaatiota suomeksikin ja joitain oppaita ja kirjoja on suomeksi, joilla pääsee alkuun. Mutta en kyllä tiedä yhtään hyvää koodaria Suomessa, joka ei osaisi englantia.
Lopetus!
Minäpä en ole ohjelmoija ollenkaan, harrastan sotalautapelejä ja rakentamilleni olen rakentamassa palvelua ;)
Olihan minulla tosin pitkä englanti lukiossa aikoinaan kaikki kurssit 9, mutta, en lukenutkaan juurikaan läksyjä, jos olisin lukenut niin kaikki kurssit olisi ollut 10, mutta, ei tämä kuitenkaan tarkoita että englannin kieli olisi helppoa mysql sivustolla, minä koen että tämä tekninen englanti on tottumattomalla, erittäin raskasta luettavaa, ei minulla ole mitään refleksejä mysql sivun englannin kieleen, eikä muittenkaan tietokone ohjelmoinnista neuvovien sivustojen ?
------
kpzpt kirjoitti:
Minäpä en ole ohjelmoija ollenkaan, harrastan sotalautapelejä ja rakentamilleni olen rakentamassa palvelua ;)
Jaa jaa, no kukas sen sun rakentamas palvelun sitten ohjelmoi, eli on ko. palvelun ohjelmoija? Kannattaisi ehkä pistää ennemmin se ohjelmoija lukemaan niitä oppaita.
Itse suosittelen käyttämään PDO:ta mysql_-juttujen sijaan. Sitä suositellaan myös Ohjelmointiputkan oppaassa.
Edit. Hassuu, heitti saman viestin kahdesti, vaikka lähetin vain kerran
Aihe on jo aika vanha, joten et voi enää vastata siihen.