標籤:mysql的編譯安裝和基本配置
MySQL是一款開源的單進程多線程的關係型資料庫,其為C/S架構;其可靠性高、伸縮性強,易用。且支援C、C++、Python、PHP等開發
其版本有a版(內測版)、B版(公測版本)、RC(Release Candidate)發行候選版本、及GA(General Availablity)正式發布版本
且分別為社區版和商業版
我在這裡安裝的是社區版的GA版本 mysql-5.6.34
MySQL的安裝:
專用軟體包安裝RPM(Rhel SUSE CentoS)、Deb
通用二進位格式包gcc: X86、X_64
源碼編譯:在MySQL5.5後要用cmake編譯
如果mysql和mysqld在同一台unix系統上,則處理序間通訊為基於mysql.sock
如果mysql和mysqld在同一台windows系統上,則處理序間通訊為基於memory(共用記憶體或者pipe管道)
如果mysql和mysqld不在同一台主機上,則處理序間通訊為基於TCP/IP,其效率不如前兩者
MySQL用戶端工具:
mysql
mysqldump
mysqladmin
mysqlcheck
mysqlimport
一、安裝cmake
跨平台編譯器,可以對一個源碼樹編譯為不同的版本,如編譯一個32位的和一個64位的且存放在不同目錄下
# tar xf cmake-2.8.8.tar.gz
# cd cmake-2.8.8
# ./configure
# make
# make install
二、編譯安裝mysql-5.5.25a
1、使用cmake編譯mysql-5.5
cmake指定編譯選項的方式不同於make,其實現方式對比如下:
./configure cmake .
./configure --help cmake . -LH or ccmake .
指定安裝檔案的安裝路徑時常用的選項:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
預設編譯的儲存引擎包括:csv、myisam、myisammrg和heap。若要安裝其它儲存引擎,可以使用類似如下編譯選項:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
若要明確指定不編譯某儲存引擎,可以使用類似如下的選項:
-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如若要編譯進其它功能,如SSL等,則可使用類似如下選項來實現編譯時間使用某庫或不使用某庫:
-DWITH_READLINE=1 (能使用load infile這種方式大量匯入MySQL資料)
-DWITH_SSL=system (支援ssl功能)
-DWITH_ZLIB=system (支援zlib壓縮庫)
-DWITH_LIBWRAP=0 (是否支援tcpwrap實現控制)
其它常用的選項:
-DMYSQL_TCP_PORT=3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_DEBUG=0
-DENABLE_PROFILING=1
如果想清理此前的編譯所產生的檔案,則需要使用如下命令:
make clean
rm CMakeCache.txt
2、提前建立一個LVM分區,和MySQL使用者、MySQL組,並將LV格式化後掛載到/mydata目錄下,在進行MySQL初始化時指定資料存放區目錄為/mydata/data
3、編譯安裝
[[email protected] ~]# groupadd -r mysql ## -r建立系統使用者
[[email protected] ~]# useradd -r mysql -g mysql -s /sbin/nologin
[[email protected] ~]# mkdir /mydata/data -p
[[email protected] ~]# chown -R mysql:mysql /mydata/data ##將儲存目錄改為mysql使用者mysql組
[[email protected] ~]# cd /tool
[[email protected] tool]# tar -xf mysql-5.6.34.tar.gz
[[email protected] tool]# cd mysql-5.6.34
[[email protected] mysql-5.6.34]#
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
[[email protected] mysql-5.6.34]# make && make install
[[email protected] mysql]# chown -R mysql:mysql ./*
[[email protected] mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data ##初始化
[[email protected] mysql]# chown -R root /usr/local/mysql/*
[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld #複製範例設定檔
[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld #加入init指令碼
[[email protected] mysql]# chkconfig --add mysql ##加入系統服務
[[email protected] mysql]# service mysqld start
[[email protected] mysql]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
[[email protected] mysql]# . /etc/profile.d/mysql.sh ##source一下這個檔案
[[email protected] mysql]# echo $PATH
看能不能串連上去
[[email protected] mysql]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.34-log Source distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
mysql> use mysql
mysql> select user,host,password from user;
+------+---------------+-------------------------------------------+
| user | host | password |
+------+---------------+-------------------------------------------+
| root | localhost | |
| root | node1.zxl.com | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | node1.zxl.com | |
| root | 192.168.%.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+---------------+-------------------------------------------+
mysql> drop user ‘‘@localhost; #刪除匿名使用者
Query OK, 0 rows affected (0.15 sec)
mysql> drop user ‘‘@node1.zxl.com; #刪除匿名使用者
Query OK, 0 rows affected (0.00 sec)
mysql> drop user ‘root‘@‘::1‘; #刪除ipv6的使用者
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host,password from user;
+------+---------------+-------------------------------------------+
| user | host | password |
+------+---------------+-------------------------------------------+
| root | localhost | |
| root | node1.zxl.com | |
| root | 127.0.0.1 | |
| root | 192.168.%.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
#為剩下的所有root使用者改密碼為‘123’
mysql> update user set password=password(‘123‘) where user=‘root‘;
Query OK, 4 rows affected (0.03 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> select user,host,password from user;
+------+---------------+-------------------------------------------+
| user | host | password |
+------+---------------+-------------------------------------------+
| root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | node1.zxl.com | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | 127.0.0.1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | 192.168.%.% | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
mysql> flush privileges; #重新整理生效
Query OK, 0 rows affected (0.00 sec)
mysql> \q
Bye
[[email protected] mysql]# mysql #退出重新連、連不上去
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)
[[email protected] mysql]# mysql -uroot -p #指定使用者和密碼
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.34-log Source distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql>\q
讓MySQL支援遠端連線
[[email protected] mysql]# cd
[[email protected] ~]# vim .my.cnf #在家目錄下建立一個隱藏目錄
[client]
user=‘root‘
password=‘123‘
host=‘localhost‘
[[email protected] ~]# mysql #這樣又可以直接連接上去了
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.34-log Source distribution
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| api |
| archiver |
| config |
| data |
| install |
| mysql |
| performance_schema |
| source |
| static |
| template |
| test |
| uc_client |
| uc_server |
| ultrax |
+--------------------+
15 rows in set (0.31 sec)
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec) ##預設引擎為innodb
mysql> \q
[[email protected] mysql]# vim /etc/my.cnf
[mysqld]
datadir=/mydata/data ##資料存放區目錄
innodb_file_per_table = ON
log-bin = master-bin
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[[email protected] mysql]# cd /mydata/data/mysql/
[[email protected] mysql]# ls
db.frm 表的結構定義檔案
db.MYD 表的資料檔案
db.MYI 表的索引檔案
對myisam引擎來說:每個表有三個檔案 .frm(表結構).MYD(表資料) .MYI(表索引)
對innodb引擎來說:所有的表共用一個資料表空間,但是這樣不支援許多進階特性,建議每表使用一個獨立的資料表空間
那麼innodb如何使用每表獨立空間?
mysql> show variables like ‘%innodb%‘; #顯示關於innodb的所有變數
| innodb_file_per_table | off |
mysql> \q
[[email protected] mysql]# vim /etc/my.cnf
innodb_file_per_table = 1
[[email protected] mysql]# service mysqld restart
[[email protected] mysql]#mysql
mysql> show variables like ‘%innodb%‘;
| innodb_file_per_table | ON |
建立一個資料庫mydb,一個表testdb
mysql>
mysql> create database mydb;
Query OK, 1 row affected (0.43 sec)
mysql> use mydb
Database changed
mysql> create table testdb(id INT NOT NULL, name char(30));
Query OK, 0 rows affected (0.44 sec)
mysql> \q
[[email protected] mysql]# cd /mydata/data/mydb/
[[email protected] mydb]# ls
db.opt #這個資料庫的預設定序和字元集(幾乎每個資料庫都會產生)
testdb.frm #表結構
testdb.ibd #每表一個資料表空間
innodb採用每表一個資料表空間後:.frm(表結構).ibd 資料表空間(表資料和表索引)
要不然所有表都使用一個資料表空間
本文出自 “11097124” 部落格,請務必保留此出處http://11107124.blog.51cto.com/11097124/1896888
MySQL的編譯安裝和基本配置