Friday, July 10, 2009

MySQL 5.1 na Windows XP

Pro své webové aplikace většinou používám jako databázi MySQL - jen pro testovací účely a vývoj, jinak se v administraci databáze nějak extra nevyznám.

I když jsem databázi MySQL u sebe instalovala už minimálně 5x, tentokrát se mi to prostě pomocí Windows instalátoru nepodařilo ani na třetí pokus - pořád stejná chyba při pokusu konfiguračního průvodce o spuštění MySQL jako služby Windows: "Could not start the service MySQL. Error:0"

Po přečtení pár příspěvků na internetu, kdo to, jak řešil a důkladném pročtení manuálu a posledním pokusu o úspěšnou instalaci, jsem se rozhodla vyzkoušet binární (neinstalační) verzi, tu je ale potřeba ručně nakonfigurovat, ... vzhledem k tomu, že se mi to podařilo podle MySQL manuálu úplně bez problémů, tady je postup (možností je samozřejmě více). Píšu postup hlavně pro sebe, abych ho nezapomněla, ale třeba se bude hodit i někomu dalšímu.

1.
Stáhnout verzi mysql 5.1.x pro Windows "Without installer"

2.
Rozbalit archiv do D:\bin-programs\mysql-5.1.x

3.
Vytvořit adresář D:\app_data\mysql\data (pro ukládání dat)

4.
Vytvořit adresář D:\app-data\mysql\data-innodb (pro ukládání INNODB tabulek)

5.
Vytvořit soubor C:\my.ini (až na malé úpravy je obsah zkopírovaný z šablony my-medium.ini, která je součástí distribuce) - je potřeba sem zanést především nastavené cesty v bodech 2 až 4.

Celý vypadá takto:


[client]
password = admin
port = 3306
socket = MySQL
[mysqld]
basedir="D:/bin-programs/mysql-5.1.56/"
datadir="D:/app_data/mysql/data/"
default-character-set=utf8
default-storage-engine=INNODB
port = 3306
socket = MySQL
skip-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
innodb_data_home_dir = D:\\app_data\\mysql\\data-innodb\\
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = D:\\app_data\\mysql\\log-innodb\\
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


6) Zkopírovat adresář data z originální distribuce mysql do D:/app_data/mysql/data

7) Vyzkoušet, zda je to v pořádku: spustit příkazovou řádku, přejít do adresáře D:\bin-programs\mysql-5.1.x\bin a spustit mysqld --console - výstup by měl vypadat nějak takto:


110423 22:27:23 [Warning] '--default-character-set' is deprecated and will be re
moved in a future release. Please use '--character-set-server' instead.
110423 22:27:23 [Warning] '--skip-locking' is deprecated and will be removed in
a future release. Please use '--skip-external-locking' instead.
110423 22:27:24 [Note] Plugin 'FEDERATED' is disabled.
110423 22:27:24 InnoDB: Initializing buffer pool, size = 16.0M
110423 22:27:24 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file D:\app_data\mysql\data-innodb\ibdata1 did
not exist:
InnoDB: a new database to be created!
110423 22:27:24 InnoDB: Setting file D:\app_data\mysql\data-innodb\ibdata1 size
to 10 MB
InnoDB: Database physically writes the file full: wait...
110423 22:27:25 InnoDB: Log file D:\app_data\mysql\log-innodb\ib_logfile0 did n
ot exist: new to be created
InnoDB: Setting log file D:\app_data\mysql\log-innodb\ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
110423 22:27:26 InnoDB: Log file D:\app_data\mysql\log-innodb\ib_logfile1 did n
ot exist: new to be created
InnoDB: Setting log file D:\app_data\mysql\log-innodb\ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
110423 22:27:27 InnoDB: Started; log sequence number 0 0
110423 22:27:27 [Note] Event Scheduler: Loaded 0 events
110423 22:27:27 [Note] mysqld: ready for connections.
Version: '5.1.56-community-log' socket: '' port: 3306 MySQL Community Server
(GPL)


8) Zastavit příkazem mysqladmin -u root -p shutdown (po výzvě k zadání hesla, ponechat heslo prázdné).

9) Znovu spustit mysqld --console

10) Spustit mysql -u root -p (prázdné heslo)

11) Nastavit heslo pro administrátora:
Update mysql.user set Password=PASSWORD('admin') WHERE User='root';


12) Vytvořit startovací a ukončovací skript:

startup.bat
D:\bin-programs\mysql-5.1.56\bin\mysqld --console


shutdown.bat
D:\bin-programs\mysql-5.1.56\bin\mysqladmin -u root -p shutdown

No comments:

Post a Comment