Langkau ke kandungan utama

Cara Memasang MySQL pada server Redhat 6

Login sebagai root & jalankan arahan
# yum install mysql-server mysql
# up2date mysql-server mysql

Memulakan servis MySQL 
# chkconfig mysqld on
# /etc/init.d/mysqld start
#chkconfig --levels 235 mysqld on
===============================================
Tetapkan katalaluan root
# mysqladmin -u root password NEWPASSWORD

===kalau nak set password root kosong atau nak reset password.


Anda boleh mendapatkan semula kata laluan pangkalan data MySQL server dengan berikut lima langkah mudah.
Langkah # 1: Berhenti proses pelayan MySQL.
Langkah # 2: Mulakan MySQL (mysqld) pelayan / proses daemon dengan pilihan --skip-geran-jadual supaya ia tidak akan meminta kata laluan.
Langkah # 3: Sambungkan ke pelayan mysql sebagai root.
Langkah # 4: Persediaan baru kata laluan akaun mysql root iaitu menetapkan semula kata laluan mysql.
Langkah # 5: Keluar dan mulakan semula pelayan MySQL.
Berikut adalah arahan anda perlu menaip bagi setiap langkah (login sebagai pengguna root):
Langkah # 1 : matikan servis mysql
# /etc/init.d/mysql stop
Output:
Stopping MySQL database server: mysqld.
Langkah# 2: Hidupkan server MySQL tanpa password:
# mysqld_safe --skip-grant-tables &
Output:
[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started
Langkah # 3: Sambung ke server mysql guna mysql client:
# mysql -u root
Output:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Langkah # 4: Set baru kata laluan MySQL root
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
Langkah # 5: Matikan server MySQL:
# /etc/init.d/mysql stop
Output:
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+  Done                    mysqld_safe --skip-grant-tables
Langkah # 6: Hidupkan server MySQL & test.
# /etc/init.d/mysql start 
# mysql -u root -p

http://stackoverflow.com/questions/2101694/mysql-how-to-set-root-password-to-null 
===============================================================

Cuba sambungan MySQL 
# mysql -u root -p

Tetapan pada pelayan MySQL
# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# ################
default-storage-engine=INNODB
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

max_connections=420
wait_timeout=600
connect_timeout=200
query_cache_size=32M
table_cache=256
tmp_table_size=9M
thread_cache_size=8

myisam_max_sort_file_size=1G
#myisam_max_extra_sort_file_size=1G
myisam_sort_buffer_size=32M
key_buffer_size=11M
read_buffer_size=64K
read_rnd_buffer_size=256K

sort_buffer_size=1M
skip-name-resolve

innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=3G
innodb_thread_concurrency=2
innodb_file_per_table
lower_case_table_names=1

slow_query_log=/var/log/mysqld-slow.log

################
bind-address = 172.20.1.#

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

==============================================================
Restart Servis
# /sbin/service mysqld restart
Periksa Mysql servis
#netstat -nap | grep mysql
  
Cipta pengguna baru dan Grant Permissions pada MySQL

Masuk mysql :- klu x ada password buang -p
$ mysql -u root -p

>CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
>GRANT ALL PRIVILEGES ON * . * TO 'admin'@'localhost';
>FLUSH PRIVILEGES;
>quit;

Bagaimana untuk membolehkan akses dari jauh MySQL server

mengakses pelayan MySQL tempatan daripada mana-mana hos luar
vi /etc/mysql/my.conf
#bind-address = <Alamat_IP__Awan_Pelayan_Anda>
bind-address = 192.168.X.X
#/etc/init.d/mysql restart

Login masuk Mysql
#mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO admin@’%’ IDENTIFIED BY “admin_password”;

Buat pengkalan data baru.
mysql> CREATE DATABASE ermegeldo;
mysql> GRANT ALL PRIVILEGES ON ermegeldo.* TO admin@’0.0.0.0′ IDENTIFIED BY ‘admin_password’;
mysql>FLUSH PRIVILEGES;


Untuk user lain.

#CREATE USER 'nama-user'@'%' IDENTIFIED BY 'katalaluan';
#GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, LOCK TABLES ON nama-pengkalan-data.* TO nama-user@'%' IDENTIFIED BY 'katalaluan';
##GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, LOCK TABLES ON nama-pengkalan-data.* TO nama-user@'localhost' IDENTIFIED BY 'katalaluan';

Jugan lupa disable Firewall.
#Disable selinux dan /etc/init.d/iptables stop

Cuba Akses dari pc lain 
#

Login guna admin yang telah dibuat tadi dari sofware SQLyog community cthnya, kemudian anda backup & restore data & struktur baru pengkalan data kedalam MySQL baru.


Buat Backup Database setiap hari & buang selepas 7 hari.
#crontab -e
#@daily mysqldump -u admin -h localhost -pkatalaluanrapat namadatabase | gzip -9 > /data/backupdb/$(date +%Y-%m-%d-%H.%M.%S).sql.gz
#@weekly rm-rf /data/backupdb/*

Bagi TUNING mysql untuk meningkatkan prestasi, saya tambah baris seperti yang diterangkan di bawah,
------------------------------
log-bin=mysql-bin
server-id=1
max_binlog_size = 500000K
expire_logs_days = 7
default-character-set=latin1
port=3306
default-storage-engine=INNODB
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=500
wait_timeout=30
connect_timeout=200
query_cache_size=32M
table_cache=256
tmp_table_size=9M
thread_cache_size=8
myisam_max_sort_file_size=1G
myisam_max_extra_sort_file_size=1G
myisam_sort_buffer_size=32M
key_buffer_size=11M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=1M
skip-name-resolve
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=18M
innodb_thread_concurrency=2
innodb_file_per_table
lower_case_table_names=1
log_slow_queries=/var/log/mysqld-slow.log

================================================

SETTING PERFORMANCE LAIN
@@@@@@@@@@@@@@@

1-Edit / etc / my.cnf (tukar nombor menurut memori mesin)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

##########################
### tuning by XXX
#
default_storage_engine=InnoDB
innodb_additional_mem_pool_size=2097152
innodb_buffer_pool_size=3G #{TotalMemoryInBytes*3/4}
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_log_file_size=256M    # Sebelum setting ini sila rename semua ib* kt /var/lib/mysql/ 
#innodb_buffer_pool_size=8G #
key_buffer_size=16777216
max_binlog_size=134217728
read_buffer_size=262144
read_rnd_buffer_size=524288
slow_query_log=/var/log/mysql.slow.log      #Tukar dari log_slow_queries=/var/log/mysql.slow.log
###skip-bdb 
query_cache_size=128M
table_cache=256
max_connections=215 #{TotalMemoryInBytes/20000000} or max 500

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


2- Restart mysqld

Jika DB telah pun digunakan sebelum penalaan:
1. Pastikan semua jadual yang digunakan pengaturcara menggunakan INNODB (bukan MyISAM atau lain2). Jika tidak mendapatkan pengaturcara untuk menukar jadual kepada INNODB. Pengaturcara / DBA boleh menggunakan arahan ini untuk menukar jadual:

ALTER TABLE t1 ENGINE=InnoDB;

2. Backup the tables
# mysqldump --all-databases > dump.sql
3. Stop mysqld
4. rm -f /var/lib/mysql/ibdata*
rm -f /var/lib/mysql/ib_logfile*
5. Start mysqld
6. Restore the dump file
# mysql < dump.sql
7. rm dump.sql


Pindah Data Mysql pada partision baru.

Anggap partision pada /dev/sdc1
  1. Backup semua MySQL database
    Code:
    mysqldump --opt --all-databases | gzip > /home/alldatabases.sql.gz
  2. Stop mysql
    Code:
    /etc/init.d/mysqld stop
  3. Backup data MySQL, bimbang masalah.
    Code:
    mv /var/lib/mysql /var/lib/mysql.backup
  4. Create the new mount point
    Code:
    mkdir /var/lib/mysql
  5. Edit /etc/fstab supaya mounted bila server boots.
    Code:
    echo "/dev/sdc1     /var/lib/mysql     ext3     defaults,usrquota    0 1" >> /etc/fstab
  6. Mount partition baru. command mount semuanya dalam /etc/fstab:
    Code:
    mount -a
  7. Tukar ownership mount point untuk user "mysql" akses.
    Code:
    chown mysql:mysql /var/lib/mysql
  8. Ensure that the permissions of the mount point are correct
    Code:
    chmod 711 /var/lib/mysql
  9. Start mysql
    Code:
    /etc/init.d/mysql start
  10. Pastikan MySQL data directory dah mount:
    Code:
    mount |grep /var/lib/mysql
  11. Anda akan lihat baris seperti ini:
    /dev/sdc1 on /var/lib/mysql type ext3 (rw,usrquota)

Sumber :-http://forums.cpanel.net/f354/how-move-mysql-data-directory-110481.html