Ari Rantala
-> Oppaat
[Viimeksi muutettu 10.2.2021]
11 . LAMP-ympäristön käyttöönotto
LAMP-ympäristöllä tarkoitetaan kokonaisuutta, joka
koostuu seuraavista
ohjelmistoista: Linux, Apache, MySQL ja PHP. Tässä
esitetään
LAMP-ympäristön käyttöönottoon liittyviä
asioita Ubuntu Linux Server 16.04 LTS -järjestelmässä.
Monet esitetyt
asiat
pätevät sellaisenaan muissakin
ympäristöissä.Tavallinen
LAMP-ympäristö noudattaa nk. kolmikerrosmallia oheisen kuvan
mukaan:
PHP-ympäristö
- PHP = PHP: Hypertext Preprocessor
<
http://www.php.net/
>,
kehitetty
vuodesta 1994.
- Työväline dynaamisten Web-dokumenttien luomiseen.
- HTML-dokumenttien sisään upotettava
Web-palvelimella
tulkattava ohjelmointikieli
Laajasti ymmärrettynä PHP viittaa
sekä
varsinaiseen PHP-kieleen että niihin teknisiin
ratkaisuihin,
joilla PHP-kielisten
ohjelmien suorittaminen on
mahdollista. Kokonaisuutena voidaan
puhua PHP-ympäristöstä.
PHP-ohjelmien suorittamiseen tarvitaan
- PHP-tulkki
- Web-palvelinohjelmisto (lähes aina tarvitaan)
-
Usein PHP-sovellukset tarvitsevat lisäksi
tietokantapalvelinta
relaatiotietokannan tietojen käsittelyyn.
PHP-ohjelmia voidaan ajaa
- käyttämällä joko maksutonta/maksullista PHP-ympäristöä
palveluna (web-hotelli)
- asentamalla PHP-ympäristö itse
PHP-ohjelmia
voi suorittaa myös
shell-skripteinä ilman web-palvelinta
PHP:n asentaminen Unix- ja Linux-järjestelmiin
Linux-järjestelmissä Apachen ja PHP:n
asennus voidaan tehdä
- paketinhallinnan kautta
- kääntämällä lähdekoodeista (harvoin)
Valmiiksi käännetty versio riittää lähes aina. Riippumatta
edellämainituista jakeluun liittyvistä asioista
PHP-ympäristö voidaan asentaa toimintakuntoon
Linux-alustalle
Apache Web-palvelimen kanssa seuraavilla tavoilla:
- PHP toimii Apachen staattisena moduulina
- PHP on osa ajettavaa Web-palvelinohjelmistoa
- Tehokas: ei tarvitse käynnistää eri
prosessia PHP-tulkkia varten
- Staattiset
moduulit näet komentamalla:
sudo apache2 -l
- Mahdollistaa kaikkien PHP:stä löytyvien
ominaisuuksien käytön
- Ubuntun normaalissa pakettivalikoimassa ei ole
tarjolla Apachea, johon PHP olisi käännetty
staattiseksi moduuliksi.
- PHP toimii Apachen dynaamisena moduulina (DSO =
Dynamically
Shared Object)
- Toiminta pieniä poikkeuksia lukuunottamatta kuten
edellisessä
- Etuna edelliseen verattuna päivitettävyys:
PHP:stä voidaan kääntää ja
asentaa uusin ilmestynyt versio ilman, että
varsinaista
Web-palvelinta
pitäisi kääntää uudelleen.
- Mm. Ubuntun libapache2-mod-php5
-paketti.
- PHP toimii tavallisena CGI-ohjelmana
- Apachen moduulina toimiessaan PHP-skriptit
suoritetaan
sen käyttäjän
oikeuksin (sama prosessi), joka huolehtii
Web-palvelimenkin ajamisesta.
Yleensä tämän käyttäjän tunnus on
nimeltään wwwdata (Ubuntu), wwrun, nobody tms.
Tämä aiheuttaa ongelmia palvelimessa, joissa useat
tavalliset
käyttäjät
haluavat ajaa omia PHP-sovelluksiaan. Syynä on se,
että
esimerkiksi
datatiedostojen oikeudet pitää asettaa siten, että
kaikilla muilla
käyttäjillä wwwdata
mukaanlukien on oltava
kirjoitusoikeudet
datatiedostoihin. CGI-ohjelmien käyttöä varten
Apache-palvelimessa on
mahdollisuus käyttää nk. suEXEC-mekanismia
http://httpd.apache.org/docs/suexec.html , joka
mahdollistaa
CGI-ohjelmien ajamisen ohjelmatiedoston omistajan
oikeuksilla.
- On mahdollista, että Internet-palveluntarjoajasi ei
tarjoa PHP:n
käyttömahdollisuutta Apachen moduulina, mutta sallii
CGI-ohjelmien
ajamisen. Tällöin CGI-version asennus jää ainoaksi
vaihtoehdoksi PHP:n
käyttämiseen.
- Kuten yleisesti CGI-ohjelmien tapauksessa,
tällä tavoin suoritetut
ohjelmat ovat hitaampia ja palvelinta enemmän
kuormittavia, koska
PHP-tulkki pitää ladata jokaisen kutsun yhteydessä.
Suurimmassa osassa
Web-palveluita tämä ei ole kuitenkaan ongelma.
- Ubuntussa php5-cgi
-ohjelmistopaketti
Asennustapa riippuu tarpeista ja mahdollisuuksista.
Ensisijaisesti
kannattaa harkita moduuliversioiden käyttämistä.
LAMP-ympäristön asentaminen
sudo apt install apache2 sudo apt install php sudo apt install libapache2-mod-php sudo apt install mysql-server sudo apt install php7.0-mysql sudo systemctl restart apache2.service
Mysql-tietokantapalvelimen asennusohjelma vaatii syöttämään
tietokantapalvelimen pääkäyttäjän root
salasanan asennuksen aikana. Anna testikäyttöä varten
alustava salasana "sala"
New password for the
MySQL "root" user:
sala
<Ok>
Apachen perustoiminta
- On käsitelty aiemmissa luvuissa
PHP:n perustoiminnan varmistaminen
Kun Web-palvelin on todettu asennetuksi ja toimivaksi
tavallisten HTML-dokumenttien tapauksessa, on aika
kokeilla
yksinkertaisinta mahdollista PHP-skriptiä. Kopioidaan tai
luodaan "Hello, World!"-skripti hello.php
<html> <head> <title>Ensimmäinen PHP-skripti</title> </head> <body> <!-- hello.php --> <?php echo "Hello, World!"; ?> </body> </html>
hakemistoon /var/www/html ja
kutsutaan sitä Web-selaimella osoitteella http://localhost/hello.php
Varsinainen PHP-skripti tarvitsee ainostaan lukuoikeudet
web-palvelimen teholliselle käyttäjälle (www-data).
Yleensä
tämä
tarkoittaa
lukuoikeuksien antamista kaikille muille:
<root> /var/www/ # ls
-la
hello.php
-rw-r--r-- 1 root root 118 Sep 18 11:15 hello.php
Lukuoikeudet voidaan lisätä tarvittaessa:
chmod o+r /var/www/hello.php
Ubuntu Linuxin asennuksen yhteydessä asennettu PHP (libapache2-mod-php5)
asentuu Apachen
dynaamisena moduulina. Tämän näkee esimerkiksi
käynnistämällä Web-palvelimen
httpd-binäärin optiolla -l, jonka "Compiled-in
modules"-listauksessa näkyvät vain staattiset moduulit.
Moduuli mod_so (Module Shared Objects) mahdollistaa
dynaamisten
moduulien käytön. Which-komennolla voidaan aluksi tarkistaa,
missä järjestelmän apache2-binääri
sijaitsee:
which apache2 /usr/sbin/apache2
sudo apache2 -l Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.
Asetustiedostoista sitten nähdään, että php7.module
ladataan dynaamisesti:
more /etc/apache2/mods-enabled/php7.0.load # Conflicts: php5 LoadModule php7_module /usr/lib/apache2/modules/libphp7.0.so
PHP:n salliminen käyttäjien public_html-kansioista
Kommentoi tiedostosta /etc/apache2/mods-enabled/php7.0.conf
rivi
php_admin_value engine off
PHP-ympäristön asetukset - php.ini
Skriptissä phpinfo.php käytetyllä phpinfo()-funktiolla
näet käyttämääsi
PHP-ympäristöösi liittyviä tietoja. Oleellisimpia
tietoja ovat mm. käyttämäsi PHP:n versio ja
käytettävissä olevat aliohjelmakirjastot.
<?php phpinfo(); ?>
Suoritetun asennuksen seurauksena ohjelman pitäisi tulostaa
Web-selaimeen mm. PHP:n versioksi ”PHP Version
7.0.22-0ubuntu0.16.04.1”.
Huomaa lisäksi erityisesti PHP-ympäristön
keskeisimmän asetustiedoston sijainti /etc/php/7.0/apache2/php.ini .
Tehtyjen muutosten aktivointi tapahtuu
käynnistämällä Web-palvelin uudelleen.
PHP:n virheilmoitukset näkyviin
PHP:n virheilmoitukset ovat kytketty oletusarvoisesti pois
päältä.
Testiympäristössä virheilmoitusten näyttäminen
on usein tarpeellista. Virheilmoitusten näyttäminen
kytketään päälle php.ini-tiedoston asetuksilla
display_errors = On ... display_startup_errors = On
Esimerkeissä oletetaan, että php.ini-tiedostossa on
käytetty ohessa esitettyjä asetuksia
MySQL-tietokantapalvelimen käyttö
MySQL:n käynnistäminen ja toiminnan varmistus
MySQL-tietokantapalvelinta voidaan hallita samoin kuin
Apache
Web-palvelinta. Tarvittavat komentoriviltä annettavat
komennot
ovat seuraavat:
sudo systemctl start mysql sudo systemctl stop mysql sudo systemctl restart mysql
MySQL kuuntelee tcp-porttia 3306. netstat-komennolla voidaan
tutkia,
onko MySQL käynnissä:
netstat -an | grep :3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
Yhteydenotto tietokantapalvelimeen
MySQL-tietokantapalvelimen mukana tulee mysql-monitori, joka
on
asiakasohjelma tietokannan käyttöä varten. Yhteys
tietokantapalvelimeen otetaan kirjoittamalla:
mysql -u root -p Enter password: sala Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql-komentokehotteeseen mysql> voidaan sitten
kirjoittaa kaikkia
tietokantapalvelimelle välitettäviä komentoja. Yhteys
suljetaan exit-komennolla:
mysql> exit Bye >
Muodostettaessa yhteyttä voidaan myös
määritellä tietokanta, jota halutaan
käyttää. Otetaan yhteys esim. osoitteet-nimiseen
tietokantaan:
mysql -u root -p osoitteet
Halutessa voidaan antaa myös salasana:
mysql -u root --password=sala osoitteet mysql -u root -psala osoitteet
Salasanaa ei kannata syöttää yhteydenmuodostusvaiheessa
sellaisissa ympäristöissä, joissa joku voi
nähdä sen esimerkiksi tutkimalla järjestelmän
prosessilistaa.
MySQL:n pääkäyttäjän salasanan
asettaminen
MySQL-tietokantapalvelimen pääkäyttäjän tunnus
on root. Tunnus sattuu sisältämään juuri samat
kirjaimet samassa järjestyksessä kuin Linux-palvelimen
pääkäyttäjän tunnus. Mitään muuta
yhteistä ao. tunnuksilla ei ole. MySQL:n asennuksen jälkeen
tietokantapalvelimen pääkäyttäjän salasana on sala ,
jos toimittiin edellä annetun ohjeen mukaan. Salasana
voidaan muuttaa tarvittaessa mm. seuraavalla tavalla
/usr/bin/mysqladmin -u root -psala password 'uusi-salasana'
Varoituksista huolimatta salasana vaihdetaan. Lue
tarvittaessa asiasta lisää: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
MySQL-käyttäjät
Tietokantapalvelinta voi käyttää vain voimassa olevilla
käyttäjätunnuksilla. Nämä
käyttäjätunnukset eivät ole samoja kuin
Linux-järjestelmän käyttäjätunnukset. Tietokantapalvelimen
pääkäyttäjä on siis
käyttäjätunnus root . Asennuksen jälkeen
ainoastaan
pääkäyttäjällä on oikeus luoda ja poistaa
tietokantoja ja niiden käyttäjiä sekä
määritellä eri tietokantojen käyttäjille
käyttöoikeuksia.
MySQL-käyttäjät ovat oikeuksineen tallennettuna mysql-nimisen
tietokannan user-taulussa:
mysql> SELECT * FROM mysql.user; ... ... Näkee kaikki kentät, paljon informaatiota ...
mysql> SELECT user,host,authentication_string FROM mysql.user; +------------------+-----------+-------------------------------------------+ | user | host | authentication_string | +------------------+-----------+-------------------------------------------+ | root | localhost | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | debian-sys-maint | localhost | *08C9ED931856151A34B1A9ABD8BB5AD9C8B3DD31 | +------------------+-----------+-------------------------------------------+ 4 rows in set (0.00 sec
MySQL-pääkäyttäjien luominen
Uusia käyttäjiä voi luoda (ja valtuuksia muuttaa) vain
sellaiset
käyttäjät, jotka ovat luotu "WITH GRANT OPTION" eli esim.
seuraavalla
tavalla:
mysql -u root -p Enter password: mysql> GRANT ALL PRIVILEGES ON *.* TO 'tkuser'@'localhost' IDENTIFIED BY 'sala' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; mysql> exit
Komentosarjan jälkeen MySQL-käyttäjä
tkuser on myös oikeutettu luomaan tietokantoja ja muita
käyttäjiä.
Muista AINA oikeuksien muuutosten jälkeen: FLUSH PRIVILEGES;
Pitkät moniriviset mysql-monitorille annettavat komennot
(mm.
SQL-kyselyt) voidaan kirjoittaa ja halutessa tallentaa millä
tahansa tekstieditorilla ja kopioida mysql-ohjelmaan esim.
leikepöydän kautta. Tekstitiedostoon tallennetut komennot
voidaan syöttää
myös suoraan komentomalla
mysql -u root -p < pitka-sql-komento.txt
MySQL-käyttäjien lisääminen : 3 tapaa
http://www.databasef1.com/tutorial/mysql-create-user.html
1) CREATE USER
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
esim:
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1';
Edellisen komennon seurauksena kaikki oikeudet N, jotta ao.
käyttäjä voisi tehdäkin jotakin laitetaan esim:
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user1'@'localhost';
Tai kaikki esim. oikeudet:
GRANT ALL ON *.* TO 'user1'@'localhost';
2) GRANT
Käyttäjä voidaan lisätä myös suoraan GRANT-lauseella esim.
GRANT ALL ON *.* TO 'user2'@'localhost' IDENTIFIED BY 'pass1';
Käyttäjän poistaminen
drop user user66;
MySQL-salasanan muuttaminen
A) Kirjaudu halumallasi MySQL-tunnuksella
B)
set password = password("yournewpassword");
MySQL-käyttöpaikat
MySQL-käyttäjätunnus on oikeastaan käyttäjätunnuksen (user)
ja
käyttöpaikan (host) yhdistelmä. Käyttäjän oikeudet määräytyy
sen
mukaan, millä käyttäjätunnuksella on kirjauduttu ja mistä
käyttöpaikasta (host). Luodaan pari käyttäjää
etäkäyttöoikeuksin:
GRANT ALL PRIVILEGES ON *.* TO 'remoroot'@'%' IDENTIFIED BY 'sala' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'iproot'@'192.168.1.191' IDENTIFIED BY 'sala' WITH GRANT OPTION;
Nämä luodut käyttäjät voidaan nyt nähdä listauksessa muiden
mukana:
mysql> SELECT user,host,password FROM mysql.user; +------------------+---------------+-------------------------------------------+ | user | host | authentication_string | +------------------+---------------+-------------------------------------------+ | root | localhost | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | debian-sys-maint | localhost | *08C9ED931856151A34B1A9ABD8BB5AD9C8B3DD31 | | tkuser | localhost | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 | | user1 | localhost | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 | | user2 | localhost | *22A99BA288DB55E8E230679259740873101CD636 | | remoroot | % | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 | | iproot | 192.168.1.191 | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 | +------------------+---------------+-------------------------------------------+ 9 rows in set (0.00 sec)
%-merkki host-sarakkeessa tarkoittaa mitä tahansa
käyttöpaikkaa.
Tietokannan luominen
Tietokannan luomiseen tarvitaaan erityiset oikeudet. Aiemmin
luodulla
tkuser-käyttäjällä on tällaiset oikeudet. Uusi
tietokanta nimeltä osoitteet luodaan komennolla create
database
seuraavasti:
mysql> create database osoitteet;
Tietokannan poistaminen
Tietokannan voi tuhota haluttaessa drop database
-komennolla.
Esimerkiksi
mysql> drop database osoitteet;
Huom: Jätä osoitteet-tietokanta jatkoa varten.
Tietokantojen listaaminen
Tarjolla olevat tietokannat voi listata show databases
-komennolla:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | osoitteet | | performance_schema | | sys | +--------------------+ 5 rows in set (0.01 sec)
Tietokannan valinta
Jos luotua tietokantaa ei määritettä muodostettaessa
yhteyttä (mysql -u root -p osoitteet), se on
määritettävä yhteydenmuodostuksen jälkeen
use-komennolla:
mysql> use osoitteet; Database changed
Tietokannan taulun luominen
Tietokannan taulu luodaan create table -komennolla. Luodaan
henkilot-niminen taulu:
CREATE TABLE henkilot ( -- 1.sql tunnus varchar(6) not null, sukunimi varchar(128) not null, etunimi varchar(128) not null, osoite varchar(255) not null, puhnro varchar(64) not null, email varchar(128), PRIMARY KEY (tunnus), UNIQUE (email) );
Kysely koostuu seuraavista asioista:
- CREATE TABLE henkilot - Luodaan uusi taulu
- -- 1.sql – Kaksi miinusmerkkiä tarkoittavat, että
loppurivi on
kommenttia. Kommenttina 1.sql, joka voisi olla vinkkinä
siitä, että
kysely on tallennettuna esim. 1.sql-nimiseen tiedostoon.
- tunnus varchar(6) - Vaihtuvamittainen merkkijono
(variable
characters = varchar) korkeintaan 6 merkkiä pitkä.
- not null - tunnus on pakollinen jokaisella rivillä
(tietueessa)
- PRIMARY KEY (tunnus) - Määrittelee
pääavaimen. Taulussa ei sallita
kahta samanlaista tunnus-arvoa. Pääavain on pakollinen
automaattisesti
(ilman määrittelyä: not null).
- UNIQUE (email) - Taulussa ei sallita kahta samanlaista
email-arvoa. Useita "null"-arvoja sallittaan.
Mainittu CREATE TABLE -komento kaikkine riveineen voidaan
suorittaa
kaikilla aiemmin mainituilla tavoilla, kun
osoitteet-tietokanta on
valittuna (use):
- Kirjoittamalla se rivi riviltä mysql-monitoriin
- Kirjoittamalla se halutulla editorilla etukäteen ja
kopioimalla leikepöydän kautta mysql-monitoriin
- Kirjoittamalla ja tallentamalla se halutulla
editorilla
etukäteen ja
antamalla ao. tiedosto syötteenä mysql-monitorille:
mysql
-u
tkuser
-p
< 1.sql
Käytettäesä esim. kahta ensimmäistä tapaa:
mysql> CREATE TABLE henkilot ( -- 1.sql -> tunnus varchar(6) not null, -> sukunimi varchar(128) not null, -> etunimi varchar(128) not null, -> osoite varchar(255) not null, -> puhnro varchar(64) not null, -> email varchar(128), -> PRIMARY KEY (tunnus), -> UNIQUE (email) -> ); Query OK, 0 rows affected (0,01 sec)
Taulujen ja niiden rakenteiden listaaminen
Tietokannan taulut voi listata show tables -komennolla:
mysql> show tables; +---------------------+ | Tables_in_osoitteet | +---------------------+ | henkilot | +---------------------+ 1 row in set (0,00 sec)
Tietokannan taulun rakenteen voi listata esim. describe- tai
desc-komennoilla:
mysql> desc henkilot; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | tunnus | varchar(6) | NO | PRI | NULL | | | sukunimi | varchar(128) | NO | | NULL | | | etunimi | varchar(128) | NO | | NULL | | | osoite | varchar(255) | NO | | NULL | | | puhnro | varchar(64) | NO | | NULL | | | email | varchar(128) | YES | UNI | NULL | | +----------+--------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
Tietojen lisääminen tauluun
Tietojen lisääminen tietokannan tauluun tapahtuu INSERT INTO
-lauseella. Esimerkiksi:
INSERT INTO henkilot ( tunnus, sukunimi, etunimi, osoite, puhnro, email ) VALUES ( 'havpen', 'Haverinen', 'Pentti', 'Poritie 4', '00001', 'pena@server.fi' );
Kysely koostuu seuraavista asioista:
- INSERT INTO -käsky lisää tietueen
tietokannan tauluun
- Vaikka kenttien nimet voidaan jättää
poiskin, ne kannattaa yleensä
määritellä, jotta lisäys onnistuisi samalla
lauseella vaikka tauluun
myöhemmin lisätään kenttiä.
- Huomaa char- ja varchar-tyyppien kohdalla:
Lisättävä data on
heittomerkeissä. Kokonais- ja reaaliluvut
määriteltäisiin ilman
heittomerkkejä.
Voit lisätä tietokantaan haluamiasi tietueita.
Esimerkeissä tietokantaan on lisätty tietueet seuraavan
tiedoston 2.sql mukaisesti:
-- 2.sql INSERT INTO henkilot ( tunnus, sukunimi, etunimi, osoite, puhnro, email ) VALUES ( 'havpen', 'Haverinen', 'Pentti', 'Poritie 4', '00001','pena@server.fi' );
INSERT INTO henkilot ( tunnus, sukunimi,etunimi,osoite, puhnro,email ) VALUES ( 'kanvis','Kanninen','Visa','Kumpiuja 2','11234','kane@abcde.fi' );
INSERT INTO henkilot ( tunnus, sukunimi,etunimi,osoite, puhnro,email ) VALUES ( 'polrau','Polkunen','Rauno','Umpikuja 1','01234','rane@abcde.fi' );
INSERT INTO henkilot ( tunnus, sukunimi,etunimi,osoite, puhnro,email ) VALUES ( 'renkar','Rentola','Kari','Asemakatu1','22234','carra@gwassa.fi' );
INSERT INTO henkilot ( tunnus, sukunimi,etunimi,osoite, puhnro,email ) VALUES ( 'renjar','Rentola','Jari','Asemakatu1','33334','jarra@gwassa.fi' );
INSERT INTO henkilot ( tunnus, sukunimi,etunimi,osoite, puhnro,email ) VALUES ( 'puuatt','Puulonen','Atte','Ratakatu1','44444', NULL );
INSERT INTO henkilot ( tunnus, sukunimi,etunimi,osoite, puhnro,email ) VALUES ( 'puuhel','Puulonen','Heli','Asematie 7','55555','hellu@abcd.fi' );
Kyselyjen suorittaminen
SQL-kielen laajin osa-alue sisältää erilaiset
SQL-kyselyt, joilla haetaan ja muokataan
relaatiotietokannassa olevaa
tietoa. Hakujen tuloksena on joukko rivejä, joilla on sama
rakenne.Tässä annetaan esimerkein jonkinlainen kosketus
siihen, mitä SQL:llä voidaan tehdä. Voit suorittaa
kyselyt haluamallasi tavalla (kirjoitus, leikepöytä,
syöttö tiedostosta).
Kaikkien rivien hakeminen
Tietokannan henkilot-nimiseseen tauluun tallennetut kaikki
tietueet ja
niiden sarakkeet voidaan listata SELECT-lauseella. Kyselyn
SELECT * FROM henkilot; --3.sql
tuloksena on kaikki taulun rivit kaikkine (*) sarakkeineen.
Jos
tulostuvia sarakkeita halutaan rajoittaa, ne on lueteltava
kyselyn
yhteydessä:
mysql> SELECT sukunimi, etunimi, email FROM henkilot; -- 4.sql +--------+-----------+---------+------------+--------+-----------------+ | tunnus | sukunimi | etunimi | osoite | puhnro | email | +--------+-----------+---------+------------+--------+-----------------+ | havpen | Haverinen | Pentti | Poritie 4 | 00001 | pena@server.fi | | kanvis | Kanninen | Visa | Kumpiuja 2 | 11234 | kane@abcde.fi | | polrau | Polkunen | Rauno | Umpikuja 1 | 01234 | rane@abcde.fi | | puuatt | Puulonen | Atte | Ratakatu1 | 44444 | NULL | | puuhel | Puulonen | Heli | Asematie 7 | 55555 | hellu@abcd.fi | | renjar | Rentola | Jari | Asemakatu1 | 33334 | jarra@gwassa.fi | | renkar | Rentola | Kari | Asemakatu1 | 22234 | carra@gwassa.fi | +--------+-----------+---------+------------+--------+-----------------+ 7 rows in set (0.01 sec
MySQL:n ja PHP:n yhteistoiminnan testaus
Tee PHP-ohjelma
<?php $db = new PDO('mysql:host=localhost;dbname=osoitteet;charset=utf8', 'tkuser', 'sala');
$stmt = $db->query('SELECT * FROM henkilot'); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "{$row['sukunimi']}, {$row['etunimi']}<br>\n"; } ?>
ja tallenna tiedosto esim. nimellä: /var/www/html/mysql-testi.php
Kun suoritat skriptin osoitteesta http://localhost/mysql-testi.php ,
selaimeen pitäisi tulostua allekkaisille riveille tunnukset:
Haverinen,
Pentti
Kanninen, Visa
Polkunen, Rauno
Puulonen, Atte
Puulonen, Heli
Rentola, Jari
Rentola, Kari
PhpMyAdmin
MySQL-tietokantapalvelinta voi käyttää useilla
erilaisilla asiakasohjelmilla. Asennusesimerkeissä on
käytetty merkkipohjaista mysql-ohjelmaa. PhpMyAdmin on
eräs MySQL-tietokannan asiakasohjelmista.
PhpMyAdmin on toteutettu PHP:llä ja se asennetaan
Web-palvelimelle
kuten mikä tahansa PHP-ohjelma.
PHP-pohjaisena phpMyAdmin-ohjelmaa käytetään
Web-selaimella ja sitä voi käyttää verkon
välityksellä käyttöpaikasta ja
käyttöjärjestelmästä riippumatta.
PhpMyAdminilla voidaan suorittaa normaalien SQL-kyselyjen
lisäksi
monia tietokannan ylläpitotoimia. Sillä voidaan mm. luoda
tietokantoja tauluineen ja määritellä esim.
käyttäjäoikeuksia.
Tässä esitetään PhpMyAdmin-ohjelman minimiasennus.
Esimerkiksi olennaisia tietoturvaan liittyviä
lisäasetuksia
ei tässä käsitellä.
Asennus Linux-järjestelmään
PhpMyAdmin vaatii toimiakseen seuraavat ohjelmistot
- Web-palvelin
- PHP-tulkki
- MySQL-tietokantapalvelin
Vaadittu ympäristö on asennettu aiemmissa tämän
dokumentin jaksoissa. phpMyAdmin-ohjelman voi asentaa
seuraavasti:
sudo apt install phpmyadmin
... Web server to reconfigure automatically:
[X] apache2 [ ] lighttpd ... Please provide a password for phpmyadmin to register with the database server. If left blank, a random password will be generated.
MySQL application password for phpmyadmin: sala
Asentunut phpmyadmin
- Asentuneen phpmyadmin-ohjelman pääasetukset ovat
tiedostossa
more /etc/apache2/conf-enabled/phpmyadmin.conf ... Alias /phpmyadmin /usr/share/phpmyadmin ...
joista keskeisin on yo. Alias-direktiivi.
Täten phpmyadmin-ohjelman käyttöliittymä löytyy
osoitteesta http://localhost/phpmyadmin/ ja
voit kirjautua käyttämään tietokantapalvelinta ja sen
tietokantoja esim. tkuser-tunnuksella
ja sala-salasanalla.
Em. tiedostosta näkee monia muita keskeisiä asetuksia.
- Lisäksi huomataan, että varsinainen ohjelma on
asentunut
/usr/share/phpmyadmin -kansioon.
Tarvittaessa voit selailla ao. kansion tiedostoja.
Kun asennus on suoritettu, selaimeen kirjoitetaan siis
osoitteeksi http://localhost/phpmyadmin/
ja kirjaudutaan haluttuna mysql-käyttäjänä esim.
tkuser-käyttäjänä. Tietokannat-alasvetovalikosta
voidaan valita osoitteet-tietokanta, jonka henkilot-taulun
Selaa-kuvaketta napsauttamalla nähdään tauluun
tallennetut rivit.
Linkkejä
Jätetty tarkoituksella tyhjäksi.
|