Odo.lv » Recipes » Datu bāzes » MySQL datubāze

MySQL datubāze

Uzstādīšana

  1. Uzstāda mysql serveri:
    sudo apt-get install mysql-server
    atbild ar y un ievada root paroli, piemēram, Student007

Konfigurēšana

Visu saskarņu klausīšanās

  1. Drošības nolūkos, pēc noklusēšanas, mysql serveris klausās un atbild tikai uz localhost, un, lai tam pieslēgtos attālināti, jāizmanto SSH tunelis.
  2. Izstrādes un testa vidē, kas atrodas aizsargātā lokālā tīklā, serveri var iestatīt, lai tas klausās visas tīkla saskarnes. Kā root lietotājs failā /etc/mysql/my.cnf izmaina rindu:
    # bind-address		= 127.0.0.1
    bind-address		= 0.0.0.0
    un pārstartē serveri.

UTF atbalsts

  1. Jaunākās mysql servera versijas izmanto UTF pēc noklusēšanas Tomēr drošībai UTF-8 atbalstu var norādīt tieši.
  2. Rediģē failu /etc/mysql/my.cnf un atbilstošajās sadaļās (zem [client] un [mysqld]) pievieno dažas jaunas rindas:
    [client]
    default-character-set=utf8
    [mysqld]
    default-character-set=utf8
    character-set-server = utf8
    collation-server = utf8_general_ci

Lietotāju pievienošana

  1. Izveido lietotāju student ar tiesībām pieslēgties no jebkuras vietas, konsolē izpildot komandu:
    CREATE USER 'student'@'%' IDENTIFIED BY 'Student007';
  2. Ja vēlas, lietotājam piešķir administratora tiesības:
    GRANT ALL PRIVILEGES ON *.* TO 'student'@'%';
    FLUSH PRIVILEGES;
  3. Ja vēlas, lai lietotājs var veidot arī citus administratora lietotājus, komandu papildina šādi:
    GRANT ALL PRIVILEGES ON *.* TO 'student'@'%' WITH GRANT OPTION;

Datu bāzes pārvietošana

Ja grib lai MySQL glabā datus /home katalogā (piem., ja / sadaļā ir ierobežota diska vieta):
  1. Aptur MySQL:
    /etc/init.d/mysql stop
  2. Pārkopē /var/lib/mysql katalogu uz /home:
    cp -r /var/lib/mysql /home/mysql
    chown -R mysql:mysql /home/mysql
  3. Izmaina konfigurācijas failu /etc/mysql/my.cnf uz:
    # datadir       = /var/lib/mysql
    datadir         = /home/mysql
Kļūdas novēršana

  1. Ja pēc tam mysql nestartējas, un failā /var/log/messages parādās ziņojumi:
    Aug 25 17:54:38 ads kernel: [  105.679159] audit(1219676078.812:2): type=1503 operation="inode_create" requested_mask="w::" denied_mask="w::" name="/home/mysql/ads.lower-test" pid=4798 profile="/usr/sbin/mysqld" namespace="default"
    Aug 25 17:54:38 ads kernel: [  105.679256] audit(1219676078.812:3): type=1503 operation="inode_create" requested_mask="w::" denied_mask="w::" name="/home/mysql/ads.lower-test" pid=4798 profile="/usr/sbin/mysqld" namespace="default"
    ...
  2. Izmaina apparmor iestatījumus. Failā vi /etc/apparmor.d/usr.sbin.mysqld pievieno rindas:
    /home/mysql/ r,
    /home/mysql/** rwk,
  3. Pārstartē apparmor:
    /etc/init.d/apparmor restart
  4. Palaiž MySQL:
    /etc/init.d/mysql start

Lietošana

  1. Pieteikšanos ar MySQL workbench, skatīt My SQLWork Bench
  2. Pieteikšanās konsolē:
    mysql -uroot -p
    un uzaicinājumā ievada paroli.
  3. Uzstādīšanas pārbaude:
    show databases;
    parāda
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema | 
    | mysql              | 
    +--------------------+
  4. Datu bāzes izveide:
    create database test;
    use test;

Datu bāzes optimizēšana

  1. Ievada komandu:
    mysqlcheck -u root -pPasswd -o <databasename>
  2. MySQL konsolē ieraksta komandu exit, lai atgrieztos parastajā čaulas komandrindas režīmā.

Kā ierakstīt MySQL datubāzē datus?

  1. Piesakās kā root lietotājs (sk. augstāk), izveido datubāzi, tabulu un ieraksta tajā datus:
    create database mydatabase;
    use mydatabase;
    create table ttt (
      id INT NOT NULL AUTO_INCREMENT, 
      val VARCHAR(255), 
      PRIMARY KEY(id));
    show tables;
    insert into ttt VALUES (NULL, 'aaa');
    select * from ttt;
    Pēdējā rinda izvada nelielu relāciju tabuliņu:
    mysql> select * from ttt;
    +----+------+
    | id | val  |
    +----+------+
    |  1 | aaa  |
    +----+------+

Kļūdu novēršana

Kā pārliecināties, kas iet un kas neiet

  1. Piesakās kā root lietotājs:
    sudo su
  2. Pārlaiž mysql serveri:
    /etc/init.d/mysql restart
    Jāparādās rindai
    mysql start/running, process xxxx
    kur xxxx ir kaut kāds skaitlis, bet nākamajā rindā ir komandrindas uzaicinājums, kas beidzas ar # (t.i. dators ir ir gatavs saņemt nākamo komandu).
  3. Apskata, kas rakstīts žurnāla failā:
    tail -n10 /var/log/mysql/error.log
    Pievērš uzmanību pēdējām rindām, tām ir jābūt apmēram šādām:
    ....
    111111 00:00:00  InnoDB: Started; log sequence number 0 123456
    111111 00:00:00 [Note] Event Scheduler: Loaded 0 events
    111111 00:00:00 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.1.41-3ubuntu12.10'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)
    Ja rāda kļūdas, pārkopē tās tīmekļa pārlūkprogrammas meklēšanas logā un cenšas atrast risinājumu.
  4. Pārliecinās, ka strādā mysql servera process:
    ps -efa|grep mysql
    kā vienai no rindām ir jābūt:
    …
    mysql     1234     1  0 20:00 ?        00:00:00 /usr/sbin/mysqld
    ...
  5. Pārliecinās, ka mysql serveris klausās tīklu:
    netstat -ant|grep 3306
    kā vienai no rindām ir jābūt:
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

Ja Mysql nestartējas

  1. Izdzēš failus:
    cd /var/lib/mysql
    sudo rm ibdata1
    sudo rm ib_logfile0
    sudo rm ib_logfile1

Noklusētas konfigurācijas atjaunošana

  1. Uzzina, kāda tieši MySql servera versija ir uzstādīta:
    dpkg-query -W|grep mysql
  2. Pārinstalē mysql serveri:
    apt-get install --reinstall mysql-server-5.1
    kur 5.1 ir tekošā pakotnes versija
  3. Atjauno root lietotāja paroli:
    sudo dpkg-reconfigure mysql-server-5.1


Skatīt arī
Created by Valdis Vītoliņš on 2008/08/08 16:42
Last modified by Valdis Vītoliņš on 2011/11/03 23:40

XWiki Enterprise 2.7.33656 - Documentation
Creative Commons Attribution 3.0 Unported License