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
