MySQL datubāze
Should prepare further: MySQL skaņošana |
Saturs
Uzstādīšana
Uzstāda mysql serveri:
Produkcijas serverim
Prododukcijas serverim ir svarīgi pārliecināties, ka tajā nav viegli uzlaužamu ievainojamību sliktu iestatījumu dēļ. Par drošiem iestatījumiem pārliecinās, palaižot papildu pakotnes uzstādīšanu:
Iestatīšana
Visu saskarņu klausīšanās
- 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.
- un pārstartē serveri.
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/conf.d/mysql.cnf izmaina rindu:
[mysqld]
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
UTF atbalsts
- Lai arī parasti mysql izmanto UTF pēc noklusēšanas, drošībai UTF-8 atbalstu var norādīt tieši.
Rediģē failu /etc/mysql/conf.d/mysql.cnf un atbilstošajās sadaļās (zem [client] un [mysqld]) pievieno dažas jaunas rindas:
...
[client]
default-character-set = utf8
...
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
...
Pieprasījumu žurnalēšana
Failā /etc/mysql/mysql.conf.d/mysqld.cnf sadaļā [mysqld] atkomentē (novāc restīti) vai pievieno rindas:
general_log_file = /var/log/mysql/mysql.log
general_log = 1- Pārstartē serveri, ievadot komandu sudo systemctl mysql restart
- Pārrauga žurnāla failu, ievadot komandu: tail -f /var/log/mysql/mysql.log
Lietotāju pievienošana
Izveido lietotāju student ar tiesībām pieslēgties no jebkuras vietas, konsolē izpildot komandu:
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'Student007';Ja vēlas, lietotājam piešķir administratora tiesības:
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost'
FLUSH PRIVILEGES;Ja vēlas, lai lietotājs var veidot arī citus administratora lietotājus, komandu papildina šādi:
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Datu bāzes pārvietošana
Ja grib lai MySQL glabā datus /home mapē (piem., ja / sadaļā ir ierobežota diska vieta):
Aptur MySQL:
systemctl stop mysqlPārkopē /var/lib/mysql mapi uz /home, un (ērtībai) izveido saiti no sākotnējās vietas:
mv /var/lib/mysql /home/
ln -s /home/mysql /var/lib/mysqlIzmaina apparmor iestatījumus. Failā /etc/apparmor.d/local/usr.sbin.mysqld pievieno rindas:
# Allow to store database in /home/mysql
/home/mysql/ r,
/home/mysql/** rwk,Pārstartē apparmor:
/etc/init.d/apparmor restartPalaiž MySQL:
systemctl start mysql
Automātiskās palaišanas atcelšana
Ja datu bāzi izmanto reti un nav nepieciešams, lai tā palaistos automātiski, ieslēdzot datoru, tad kā root lietotājs failā /etc/init/mysql.conf izmaina rindu:
...
#start on runlevel [2345]
start on runlevel [345]
..
Lietošana
- Pieteikšanos ar MySQL workbench, skatīt MySQLWorkBench
- un uzaicinājumā ievada paroli.
Pieteikšanās konsolē:
mysql -uroot -p Uzstādīšanas pārbaude:
show databases;parāda
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+Datu bāzes izveide:
create database test;
use test;
Datu bāzes optimizēšana
Ievada komandu:
mysqlcheck -u root -pPasswd -o <databasename>- MySQL konsolē ieraksta komandu exit, lai atgrieztos parastajā čaulas komandrindas režīmā.
Kā ierakstīt MySQL datubāzē datus?
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 tabulu:
mysql> select * from ttt;
+----+------+
| id | val |
+----+------+
| 1 | aaa |
+----+------+
Kļūdu novēršana
Kā pārliecināties, kas iet un kas neiet
Piesakās kā root lietotājs:
sudo suPārlaiž mysql serveri:
systemctl restart mysqlJāparādās rindai
mysql start/running, process xxxxkur xxxx ir kaut kāds skaitlis, bet nākamajā rindā ir komandrindas uzaicinājums, kas beidzas ar <b>#</b> (t.i. dators ir ir gatavs saņemt nākamo komandu).
- Ja rāda kļūdas, pārkopē tās tīmekļa pārlūkprogrammas meklēšanas logā un cenšas atrast risinājumu.
Apskata, kas rakstīts žurnāla failos /var/log/syslog, /var/log/upstart/mysql.log Pievērš uzmanību pēdējām rindām, tām ir jābūt apmēram šādām:
...
130304 19:47:03 InnoDB: 1.1.8 started; log sequence number 104677818
130304 19:47:03 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
130304 19:47:03 [Note] - '127.0.0.1' resolves to '127.0.0.1';
130304 19:47:03 [Note] Server socket created on IP: '127.0.0.1'.
130304 19:47:03 [Note] Event Scheduler: Loaded 0 events
130304 19:47:03 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.7.29-0ubuntu0.12.04.1' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
mysqld is alive
... Meklē visus ar MySQL saistītos ziņojumus žurnālu failos, piemēram, ievadot komandas:
cd /var/log
grep -ri mysql *Pārliecinās, ka strādā mysql servera process:
ps -efa|grep mysqlkā vienai no rindām ir jābūt:
...
mysql 1234 1 0 20:00 ? 00:00:00 /usr/sbin/mysqld
...Pārliecinās, ka mysql serveris klausās tīklu:
netstat -ant|grep 3306kā 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
Izdzēš failus:
cd /var/lib/mysql
sudo rm ibdata1
sudo rm ib_logfile0
sudo rm ib_logfile1Pārstata iestatījumu failus:
mysqld --initialize
Pēc pārstartēšanas paliek uzkāries mysqld-safe process
Failā /etc/init.d/mysql izmaina rindas:
# !!! due to mysqld-safe problem http://forum.slicehost.com/index.php?p=/discussion/1000/x
# sanity_checks;
MySQL servera pārinstalēšana
sudo rm -fr /etc/mysql/ /var/lib/mysql
sudo apt install --reinstall --fix-broken --fix-missing mysql-server
root lietotāja paroles atjaunošana ar SQL
flush privileges;
Saites
- MySQL datubāzes kopēšana
- MySQL Windows
- MySQL WorkBench pārvaldības rīks
- http://www.tecmint.com/mysqladmin-commands-for-database-administration-in-linux/
Alternatīvas
Created by Valdis Vītoliņš on 2008-08-08 10:42
Last modified by Valdis Vītoliņš on 2021-04-19 16:35