看板 Knuckles_note
作者 標題 Re: [CentOS] MySQL 安裝與設定
時間 2013年09月09日 Mon. PM 03:19:26
安裝環境: Linode 的 CentOS 6.5 64bit
新版 CentOS 7 請改至 [CentOS] MariaDB 安裝與設定 (CentOS 7) - KnucklesNote板 - Disp BBS
同一台主機有要裝web server的話,先安裝 Apache 與 PHP
參考: http://disp.cc/b/11-6vX5 http://disp.cc/b/11-6vXq
◎ 安裝 MySQL
CentOS 6.5 預設是使用 MySQL 5.1
如果要裝新版的 MySQL 5.5 的話,要裝 remi repo
參考: http://disp.cc/b/11-6BcZ
先安裝新版的 EPEL repo
$ rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
再裝 Remi repo
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
讓 remi repo 預設就是 enable
$ vim /etc/yum.repos.d/remi.repo
將最上面的 [remi] 下的 enabled=0 改成 enabled = 1
在資料庫主機安裝 MySQL Server
$ yum install mysql-server
如果不是當資料庫的主機,只是需要連到資料庫主機做存取或備份的話
安裝 mysql 即可,不用裝 mysql-server
$ yum install mysql
如果要用 PHP 來存取 mysql 的話要安裝 PHP 的 mysql 模組
$ yum install php-mysql
初次啟動
$ service mysqld start
修改root密碼
$ mysqladmin -u root password 'your.password'
登入看看
$ mysql -u root -p
離開
mysql> exit
設定 MySQL 服務隨系統一起啟動
# chkconfig mysqld on
執行 mysql 的安全性設定
$ mysql_secure_installation
# 輸入root密碼
Enter current password for root (enter for none):
# 是否更改root密碼,選n
Change the root password? [Y/n] n
# 移除預設的匿名帳號
Remove anonymous users? [Y/n] y
# 限制root帳號只能在localhost登入
Disallow root login remotely? [Y/n] y
# 移除預設的 test 資料庫
Remove test database and access to it? [Y/n] y
# 立即重載讓設定生效
Reload privilege tables now? [Y/n] y
◎ 設定 MySQL
mysql的設定檔為 /etc/my.cnf
在 /usr/share/doc/mysql-server-5.x.xx/
裡有針對不同記憶體大小的主機提供不同的設定檔
my-innodb-heavy-4G.cnf 最大配置安裝,記憶體至少4G
my-huge.cnf: 適合 1GB - 2GB 記憶體且主要是給 MySQL 使用的主機。
my-large.cnf: 適合 512MB 記憶體且主要是給 MySQL 使用的主機。
my-medium.cnf: 只有 32MB - 64MB 記憶體的主機使用,
或者有 128MB RAM 但需要運行其他伺服器,例如 web server。
my-small.cnf: 記憶體少於 64MB 時適用這個,MySQL 會佔用較少資源。
依主機大小選擇適合的設定檔,複製到 /etc/my.cnf
$ mv /etc/my.cnf /etc/my.cnf.default
$ mv /usr/share/doc/mysql-server-5.x.xx/my-large.cnf /etc/my.cnf
編輯設定檔
$ vim /etc/my.cnf
在 [mysqld] 的設定裡
將不再支援的 --skip-locking 改成 --skip-external-locking
# thread_concurrency改成CPU的核心數*2
thread_concurrency = 8
# 若網頁和資料庫在同一台,則關閉外部連結的功能比較安全
#skip-networking
skip-networking
若資料庫有用到InnoDB的話,要開啟以下設定
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 256M
#innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 64M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
改為
default-storage-engine = InnoDB
# 存放 innodb 資料庫檔案的資料夾
innodb_data_home_dir = /var/lib/mysql
# 存放 innodb 資料庫的檔案名稱,設為初始大小100M,若不夠用時會自動擴增8MB
innodb_data_file_path = ibdata1:100M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
# buffer_pool_size 會固定占用一塊記憶體,若是與網頁server共用的話不要設太大
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
# log_file_size 設為 buffer_pool_size 的25%
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
重新啟動 MySQL
$ service mysqld restart
若啟動失敗,可至 /var/lib/mysql/xxxx.err 查看錯誤記錄
其中xxxx為主機的hostname
注意若要修改 innodb_data_file_path 時
需要先備份資料庫後,刪除 /var/lib/mysql/ 下的 ibdata* 與 ib_logfile*
重啟 mysqld 會建立新的 ibdata1
然後再把備份的資料庫還原回來
若是有備份資料庫 mysql 的話
只要還原資料庫即可選原之前設定的使用者
若另一台主機的使用者無法登入的話
重新開機再試試看
◎ 新增使用者帳號
若 web 主機不是在同一台,用 root 會無法登入
要另外建一個有所有權限的管理者帳號
$ mysql -u root -p
新增一個可從主機 host1 登入的使用者 username ,密碼為 password
mysql> CREATE USER 'username'@'host1' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'username'@'host1' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
◎ MySQL 基本操作
登入mysql
$ mysql -u root -p
列出所有資料庫
mysql> SHOW DATABASES;
切換至使用的資料庫 db_name
mysql> USE db_name
顯示目前使用的資料庫
mysql> SELECT DATABASE();
顯示目前資料庫中的所有資料表
mysql> SHOW TABLES;
顯示資料表 table_name 中的所有欄位
mysql> SHOW COLUMNS FROM table_name;
mysql> SHOW FIELDS FROM table_name;
mysql> DESCRIBE table_name;
mysql> EXPLAIN table_name;
◎ MySQL 時區設定
MySQL 啟動時會讀取系統的時區設定
先依這篇修改系統時區 http://disp.cc/b/11-3Tty
再重啟 MySQL 即可
不想重啟MySQL的話可執行以下指令
mysql> SET GLOBAL time_zone = '+8:00';
--
※ 作者: Knuckles 時間: 2013-09-09 15:19:26
※ 編輯: Knuckles 時間: 2017-02-14 14:59:33
※ 同主題文章:
06-25 19:15 □ [CentOS] Apache+PHP+MySQL 安裝與設定 (CentOS6.2)
09-09 11:53 □ [CentOS] Apache 安裝與設定 (CentOS 6.5)
09-09 12:32 □ [CentOS] PHP 安裝與設定 (CentOS 6.5)
● 09-09 15:19 □ [CentOS] MySQL 安裝與設定 (CentOS 6.5)
09-09 18:01 □ [CentOS] phpMyAdmin 安裝與設定
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 2094
回列表(←)
分享