Lightweight enterprise databáze

Když manažeři viděli celkovou cenu za licence na Oracle, bleskurychle rozhodli, že mimořádná investice do IT se mimořádně odkládá na příští rok a proto se zatím máte soustředit na menší databazový kalibr – MySQL. Když za vámi přijde programátor Jarda s kulatým zarostlým obličejem téměř skrývající tázavý pohled, je vám jasné, že nezbývá než se MySQL podívat pořádně na zoubek a Jardovi ukázat, jak na to.

  • Nainstalujte MySQL.

Hint:

aptitude update
aptitude install mysql-server

E: Internal Error, Could not perform immediate configuration (2) on util-linux
A package failed to install.  Trying to recover:

dpkg --force-all -i /var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_amd64.deb 

aptitude install mysql-server
  • Nastavte MySQL tak, aby naslouchala síťově.
  • Založte databázi jarda-test.
  • Pomožte Jardovi vytvořit tabulku zákazník (ID, jméno, příjmení, aktivní, “nějakej ten index, aby to bylo rychlý, žejo”, “ajdý má bejt unikátní, prej že dva lidi se můžou menovat stejně”).
  • Vložte několik různých zákazníků (všichni aktivní, Petra Chmelíková, Alžběta Cilbulková, Jana Čeplová, Anna Podzemská, Barbora Benešová, Karel Matějka) a předveďte, jak je v SELECTu srovnat podle abecedy. (HINT: SET NAMES utf8)
  • Vytvořte uživatele jarda s plným přístupem do databáze jarda-test.
  • Vytvořte uživatele jarda-web s přístupem pouze pro čtení do databáze jarda-test.
  • Demonstrujte, že uživatel jarda-web bude dobrý pro část webové aplikace, která jenom čte data (nemůže zapisovat, mazat, … záznamy z databáze).
  • Předveďte, jak funguje izolace transakcí, COMMIT a ROLLBACK na tabulkách se storage enginem MyISAM a InnoDB.
  • Ukažte, jak logovat pomalé nebo všechny dotazy.
  • Ukažte, jak zálohovat databázi jarda-test a obnovit ji do databáze jarda-test2.
  • Změňte heslo uživateli jadra pomocí GRANT a pomocí DML nad mysql.users.
  • Přihlašte se k sousedově MySQL databázi.

Řešení

  1. aptitude install mysql-server-5.0
  2. v /etc/mysql/my.cnf zakomentovat
    bind-address            = 127.0.0.1;
  3. /etc/init.d/mysql restart
  4. CREATE DATABASE `jarda-test`;
  5. CREATE TABLE zakaznik (id INTEGER, jmeno VARCHAR(255), prijmeni VARCHAR(255), aktivni SMALLINT, PRIMARY KEY (id));
  6. CREATE INDEX zakaznik_prijmeni_index ON zakaznik2 (prijmeni(15));
  7. GRANT ALL PRIVILEGES ON `jarda-test`.* TO jarda@localhost IDENTIFIED BY 'superheslo' WITH GRANT OPTION;
  8. GRANT SELECT ON `jarda-test`.* TO `jarda-web`@localhost IDENTIFIED BY 'superheslo' WITH GRANT OPTION;
  9. CREATE TABLE `zakaznik2` ( `id` int(11) NOT NULL default '0', `jmeno` varchar(255) default NULL, `prijmeni` varchar(255) default NULL, `aktivni` smallint(6) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
  10. transakce
    BEGIN;
    INSERT INTO zakaznik VALUES (2, 'a', 'b', 0);
    INSERT INTO zakaznik2 VALUES (2, 'a', 'b', 0);
    SELECT * FROM zakaznik;
    SELECT * FROM zakaznik2;
  11. paralelně SELECT * FROM zakaznik; a SELECT * FROM zakaznik2;
  12. pak opět v otevřené transakci zapíšeme změny
    COMMIT;
  13. a ověříme SELECT * FROM zakaznik2;
  14. změny také můžeme zahodit
    BEGIN;
    INSERT INTO zakaznik VALUES (3, 'a', 'b', 0);
    INSERT INTO zakaznik2 VALUES (3, 'a', 'b', 0);
    ROLLBACK;
  15. SELECT * FROM zakaznik;
  16. SELECT * FROM zakaznik2;
  17. CREATE DATABASE `jarda-test2`;
  18. mysqldump jarda-test | mysql jarda-test2; nebo mysqldump –opt jarda-test.sql; mysql jarda-test2 < jarda-test.sql
  19. v /etc/mysql/my.cnf
    log_slow_queries        = /var/log/mysql/mysql-slow.log 
    long_query_time = 1
  20. /etc/init.d/mysql restart
  21. v /etc/mysql/my.cnf
    log             = /var/log/mysql/mysql.log
  22. SET PASSWORD FOR 'jarda'@'localhost' = PASSWORD('noveheslo');
  23. UPDATE mysql.user SET Password=PASSWORD('noveheslo') WHERE User='jarda' AND Host='localhost'; FLUSH PRIVILEGES;
  24. mysql -h192.168.9.100 -u jarda -p (předtím musí následovat GRANT pro danou adresu)

Bonus

Předveďte, jak nainstalovat dvě instance MySQL na stejný server (například dvě různé verze).

 
2010-08-lightdb.txt · Last modified: 2011-11-17 10:43 by ucitel
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki