r
Hemsida: http://www.mysql.com/
Manualer: http://dev.mysql.com/
http://www.slackware.se under Artiklar, Mysql: Signaturen "exz" har skrivit 2 artiklar om Mysql
Mysql Handboken (ISBN: 9163608308, glöm ej söka för bästa pris, kolla även http://www.bokkap.se/)
Dessutom läser vi naturligtvis README och INSTALL dokumenten i mysql-katalogen. ;-)
Kom ihåg att bli "root" och ställa dig i /usr/local/mysql-standard-4.1.10a-pc-linux-gnu-i686 sedan skapar vi standard databaserna(finns i "scrips").. # scripts/mysql_install_db Installing all prepared tables Fill help tables To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: ./bin/mysqladmin -u root password 'new-password' ./bin/mysqladmin -u root -h haze password 'new-password' See the manual for more instructions. You can start the MySQL daemon with: cd . ; ./bin/mysqld_safe & You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory: cd sql-bench ; perl run-all-tests Please report any problems with the ./bin/mysqlbug script! The latest information about MySQL is available on the web at http://www.mysql.com Support MySQL by buying support/licenses at https://order.mysql.com
..Vi vill inte att servern ska köras som "root" utan vi skapar en grupp "mysql" och en användare "mysql".. # groupadd mysql groupadd: group mysql exists # useradd -g mysql mysql useradd: user mysql exists ..med "-g mysql" menas "initial grupp mysql", som synes finns dom redan i Slackware.
Då ändrar vi "rättigheterna" så att "root" äger allt (-R . (punkt) menas "den katalog du står i och allt "nedanför").. # chown -R root . ..utom katalogen "data" som vi ger till "mysql".. # chown -R mysql data ..och gruppen "mysql" överallt. # chgrp -R mysql .
Konfigurationsfilen ska vara /etc/my.cnf (filen saknas /MDKDIO) så vi tar en exempelfil som vi kan redigera om vi vill, dom ligger i "support-files".. # cp support-files/my-small.cnf /etc/my.cnf ..den duger som den är
Det finns olika sätt att sätta lösenord, ett ser du ovan i utskriften från när du skapade databaserna, ett annat är som jag gör. :-). Först startar vi servern, som du ser ligger inte /usr/local/mysql/bin ännu i vår PATH (sökväg, det fixar vi sedan, d.v.s. om allt fungerar :-) ..) # bin/mysqld_safe --user=mysql & [1] 5981 # Starting mysqld daemon with databases from /usr/local/mysql/data ..och går in i mysql-monitor, som är "textprogrammet" för Mysql.. # bin/mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.10a-standard Type 'help;' or '\h' for help. Type '\c' to clear the buffer. Byt ut "x-en" mot ditt lösen, men "fnuttarna" ska vara med. mysql> set password for root@localhost=password('xxxxxxxx'); Query OK, 0 rows affected (0.04 sec) ..logga ut.. mysql> \q Bye
Logga in och kontrollera. # bin/mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.10-max-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. Det rekommenderas att skapa ett användarkonto för grundläggande användning, naturligtvis använder du ett bättre lösenord än jag gjort. ;-) (to användarnamn identified by 'lösenord') mysql> grant create, create temporary tables, delete, execute, -> index, insert, lock tables, select, show databases, -> update on *.* to hakan identified by 'hakan'; Query OK, 0 rows affected (0.01 sec) I och med att jag ansluter till mysqlservern i mina PHP-filer, måste jag också gör en till "hakan@localhost". mysql> grant create, create temporary tables, delete, execute, -> index, insert, lock tables, select, show databases, -> update on *.* to hakan@localhost identified by 'hakan'; Query OK, 0 rows affected (0.01 sec) mysql> \q Bye Då provar vi.. root@haze:~# mysql -u hakan -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 4.1.10-max-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> \q Bye Bra, det fungerar, då stänger vi servern. root@haze:~# mysqladmin -p shutdown Enter password: STOPPING server from pid file /usr/local/mysql/data/haze.pid 050331 20:52:05 mysqld ended [1]+ Done mysqld_safe --user=mysql root@haze:~#
Då ska vi lägga /usr/local/mysql/bin till vår PATH, finns många sätt, jag gör det "globalt" via /etc/profile, så här blir raden.. # Set the default system $PATH: PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/local/mysql/bin" ..kom nu ihåg att bli "root" via "su -", vanliga "su" har inte "sökvägen".
Alla dataprogram är svåra, så det kommer inte som någon överraskning att det också gäller databaser ;-). Manualen för Mysql innehåller "allt", men är du som jag, d.v.s. vill ha en bok, så är min 1:a rekommendation "Mysql Handboken". Den är både för nybörjaren och innehåller även mer komplicerade saker för senare inlärning "nångång".
De båda böckerna om PHP (se PHP-sidan) innehäller också lite grundläggande "sql"-kommandon för att snabbt komma igång.
Även om "exz"(se ovan) inte är nöjd med sin artikel, så tycker jag att den är väl värd en genomläsning :-).
Kort,kort, nyckelord (kommandon) i SQL är inte skifteskänsliga, men identifierarna (databasnamn,tabellnamn m.m.) är det i ett UNIX-system.
Starta servern och logga in med din användare, först ska vi skapa en egen databas MIN_DATA.. mysql> create database MIN_DATA; ..och så går vi in i den.. mysql> use MIN_DATA; ..och skapar 3 st. tabeller, ADRESSER, ADRESSER1, ADRESSER2 och TELEFON är redan upptagna av min egen "Adressbok", så jag har fått använda andra nummer, du kan naturligtvis "börja från början", se bara till att du är konsekvent. Radbrytningen är bara för att det ska bli tydligare..
mysql> create table ADRESSER3 ( -> ID int not null auto_increment primary key, -> EFTERNAMN varchar(15) not null, -> FORNAMN varchar(15) not null, -> ADRESS varchar(30), -> POSTNR int(6), -> ORT varchar(15), -> HEM varchar(15), -> ARB varchar(15), -> MOBIL varchar(15), -> EPOST varchar(35); ERROR 1064 (42000): 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 '' at line 11 Garanterat inte sista gången ni ser nåt sånt, ser ni att jag glömt stänga parentesen, jag kan bläddra i angivna kommandon med piltangenterna upp/ner så jag behöver inte skriva om, nu kommer kommandot "på rad" mysql> create table ADRESSER3 ( ID int not null auto_increment primary key, EFTERNAMN varchar(15) not null, FORNAMN varchar(15) not null, ADRESS varchar(30), POSTNR int(6), ORT varchar(15), HEM varchar(15), ARB varchar(15), MOBIL varchar(15), EPOST varchar(35)); Query OK, 0 rows affected (0.04 sec) Nu ska vi sätta in lite värden.. mysql> insert into ADRESSER3 values (null,"Nilsson","Nils","Nilsvägen 10", -> 12345,"Nilsstad","0110-12345","0120-54321","070-7654321", -> "nils.nilsson@nilsson.ni"); Query OK, 1 row affected (0.00 sec) mysql> insert into ADRESSER3 values (null,"Nilsson","Sven","Svenvägen 10", -> 12345,"Svenstad","0110-65432","0120-23456","070-1234567", -> "sven.nilsson@nilsson.sv") Query OK, 1 row affected (0.00 sec) mysql> insert into ADRESSER3 values (null,"Karlsson","Sven","Karlsvägen 10", -> 12345,"Karlstad","4444-12345","4444-54321","070-4567891", -> "sven.karlsson@karlsson.ka"); Query OK, 1 row affected (0.00 sec) Värdet "null" för ID gör att, via "auto_increment", mysql sätter ett unikt värde där (ökas med 1 som förval).
Utskriften blir väldigt konstig i mysql-monitor med så många kolumner så jag delar upp ADRESSER i två mindre..
mysql> create table ADRESSER4 ( -> ID int not null auto_increment primary key, -> EFTERNAMN varchar(15) not null, -> FORNAMN varchar(15) not null, -> ADRESS varchar(30), -> POSTNR int(6), -> ORT varchar(15)); Query OK, 0 rows affected (0.00 sec) ..värden.. mysql> insert into ADRESSER4 values (null,"Nilsson","Nils","Nilsvägen 10" -> 12345,"Nilsstad"); Query OK, 1 row affected (0.00 sec) mysql> insert into ADRESSER4 values (null,"Nilsson","Sven","Svenvägen 10" ->54321,"Svenstad"); Query OK, 1 row affected (0.00 sec) mysql> insert into ADRESSER4 values (null,"Karlsson","Sven","Karlsvägen 10" -> 12345,"Karlstad"); Query OK, 1 row affected (0.00 sec) ..nu tittar vi.. mysql> select * from ADRESSER4; +----+-----------+---------+---------------+--------+----------+ | ID | EFTERNAMN | FORNAMN | ADRESS | POSTNR | ORT | +----+-----------+---------+---------------+--------+----------+ | 1 | Nilsson | Nils | Nilsvägen 10 | 12345 | Nilsstad | | 2 | Nilsson | Sven | Svenvägen 10 | 54321 | Svenstad | | 3 | Karlsson | Sven | Karlsvägen 10 | 12345 | Karlstad | +----+-----------+---------+---------------+--------+----------+ 3 rows in set (0.00 sec)
mysql> create table TELEFON1 ( -> ID int not null primary key, -> HEM varchar(15), -> ARB varchar(15), -> MOBIL varchar(15), -> EPOST varchar(35)); Query OK, 0 rows affected (0.00 sec) ..värden, lägg märke till att jag använder det ID-nr som har tilldelats i ADRESSER4.. mysql> insert into TELEFON1 values (1,"0110-12345","0120-54321","070-7654321", -> "nils.nilsson@nilsson.ni"); Query OK, 1 row affected (0.00 sec) mysql> insert into TELEFON1 values (2,"0110-65432","0120-23456","070-1234567", -> "sven.nilsson@nilsson.sv"); Query OK, 1 rows affected (0.00 sec) mysql> insert into TELEFON1 values (3,"4444-12345","4444-54321","070-4567891", -> "sven.karlsson@karlsson.ka"); Query OK, 1 row affected (0.00 sec) ..nu tittar vi.. mysql> select * from TELEFON1; +----+------------+------------+-------------+---------------------------+ | ID | HEM | ARB | MOBIL | EPOST | +----+------------+------------+-------------+---------------------------+ | 1 | 0110-12345 | 0120-54321 | 070-7654321 | nils.nilsson@nilsson.ni | | 2 | 0110-65432 | 0120-23456 | 070-1234567 | sven.nilsson@nilsson.sv | | 3 | 4444-12345 | 4444-54321 | 070-4567891 | sven.karlsson@karlsson.ka | +----+------------+------------+-------------+---------------------------+ 3 rows in set (0.00 sec)
Då ska vi titta på lite på det hela..
mysql> show databases; +----------+ | Database | +----------+ | MIN_DATA | | dynsite | | mysql | | test | +----------+ 4 rows in set (0.00 sec) mysql> use MIN_DATA; Database changed mysql> show tables; +--------------------+ | Tables_in_MIN_DATA | +--------------------+ | ADRESSER | | ADRESSER2 | | ADRESSER3 | | ADRESSER4 | | TELEFON | | TELEFON1 | +--------------------+ 6 rows in set (0.00 sec) mysql> describe ADRESSER4; +-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | ID | int(11) | | PRI | NULL | auto_increment | | EFTERNAMN | varchar(15) | | | | | | FORNAMN | varchar(15) | | | | | | ADRESS | varchar(30) | YES | | NULL | | | POSTNR | int(6) | YES | | NULL | | | ORT | varchar(15) | YES | | NULL | | +-----------+-------------+------+-----+---------+----------------+ 6 rows in set (0.00 sec)
..sedan kan du själv börja experimentera med dom..lycka till..och titta också under PHP-sidan så fär du lite mer att "joxa" med. :-).
Jag har nästan alla "libs" som finns.. ;-), så det är lite svårt att säga vilka som behövs, men enklast brukar vara att prova köra kommandot. Programmet säger då till vad som fattas, du kan även titta på dom olika "specialsidorna" som jag visar under "Manual".
Manual: http://dev.mysql.com/doc/administrator/en/index.html
root@haze:/usr/local# cd mysql-administrator/bin/ root@haze:/usr/local/mysql-administrator/bin# ./mysql-administrator
Prova med 127.0.0.1 om inte "localhost" fungerar..
..jag har inte lärt mig ett dugg ännu..
jag sparar det till någon regning dag. ;-)
..men snyggt är det!
Manual: http://dev.mysql.com/doc/query-browser/en/index.html
root@haze:/usr/local# cd mysql-query-browser/bin/ root@haze:/usr/local/mysql-query-browser/bi# ./mysql-query-browser ./mysql-query-browser-bin: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory Söker, och hittar paketet cxxlibs-6.0.0-i486-1.tgz finns också här http://ftp.tcrc.edu.tw/Linux/Slackware/9.0-current/slackware/a/ Gå till katalogen där du laddat ner det och.. #installpkg cxxlibs-6.0.0-i486-1.tgz ..sedan.. # cd mysql-query-browser/bin/ root@haze:/usr/local/mysql-query-browser/bin# ./mysql-query-browser
..och sedan..
..titta under "Help".
"Hemsida": http://www.mysql.com/products/mysqlcc/index.html , utvecklas inte längre!
root@haze:/usr/local# cd mysqlcc root@haze:/usr/local/mysqlcc# ./mysqlcc
Samma här..
..får väl hoppas att det regnar hela sommaren.. :-)