HowTo:Ako po nainštalovaní MySQL vytvoriť na Gentoo novú databázu

Z Betlista.net

   Tento článok má slúžiť k tomu, ako vytvoriť MySQL inštanciu databáze. Neide o jednoduchý create database príkaz. Hodí sa to napríklad, keď chcete aby každý uživateľ bol root'om na vlastnej databáze.

1. Spustíte príkaz na vytvorenie DB

mysql_install_db --datadir=/home/user/mysql/datadir

kde parameter datadir určuje, kde má mať databáza dáta (ja to dávam k uživateľovi a udržujem konvenciu mysql/datadir, ale to záleží len a len na Vás)

2. Následne nastavujem databázu v konfiguráku:

/etc/mysql/my.cnf

napríklad na:

[mysqld5]
mysqld-path           = /usr/sbin/mysqld
character-set-server  = utf8
default-character-set = utf8
user                  = mysql
server-id             = 5
port                  = 3314
socket                = /home/user/mysql/user.net.sock
pid-file              = /var/run/mysqld/mysql-user.net.pid
log-error             = /home/user/logs/mysql-user.net-error.log
datadir               = /home/user/mysql/datadir
bind-address          = 127.0.0.1

Tu si treba dať pozor na to, že mysql musí mať prístup do adresárov:

  • /home/user/mysql
  • /home/user/logs
  • /home/user/mysql/datadir

Ja nastavujem vlastníka a skupinu datadir adresára na mysql, potom si to uživateľ sám nezmaže. Najspoľahlivejšia kontrola práv sa mi osvedčil postup, že sa prihlásim ako mysql a skúsim sa do týchto adresárov dostať a vytvoriť tam test.txt súbor.

3. reštartnem MySQLManager'a

/etc/init.d/mysqlmanager restart

Keď následne skontrolujete bežiace procesy pomocou

ps aux | grep mysql

tak by medzi nimi mal byť aj ten so server-id=5, prípadne to môžete vyberať hneď

ps aux | grep server-id=5

4. Následne sa skúsite na vytvorený socket pripojiť

mysql --socket=/home/user/mysql/user.net.sock -u root

Uživateľ defaultne nemá heslo a Vám sa objaví mysql prompt

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.38-debug Gentoo Linux mysql-5.0.38

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Odporúčam heslo hneď zmeniť (samozrejme ak to nie je len akási DB na testy). Predpokladám, že do databáze ste stále pripojený, tak vyberte konkrétnu databázu mysql

use mysql

Zistite aký uživatelia v nej sú (mali by to byť len root'ovia).

select user, host from user;

Zmenťe všetkým heslá:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('p4ssw0rd');

Aby ste však nemuseli tento príkaz písať pre každého uživateľa, stačí spustiť príkaz:

select concat("SET PASSWORD FOR '", user, "'@'", host, "' = PASSWORD('p4ssw0rd');") command from user;

ktorý vygeneruje príkazy na zmenu hesla pre všetkých uživateľov.

Pre istotu sa skúste prihlásiť so zmeneným heslom, prepínač -p zariadi, že sa to spýta na heslo.

mysql --socket=/home/user/mysql/user.net.sock -u root -p

   Na generovanie hesla používam utilitku makepasswd:

makepasswd --chars=16

 - vygeneruje heslo s dĺžkou 16 znakov