MySQL的編譯安裝和基本配置

來源:互聯網
上載者:User

標籤:mysql的編譯安裝和基本配置

MySQL是一款開源的單進程多線程的關係型資料庫,其為C/S架構;其可靠性高、伸縮性強,易用。且支援C、C++、Python、PHP等開發

其版本有a版(內測版)、B版(公測版本)、RC(Release Candidate)發行候選版本、及GA(General Availablity)正式發布版本

且分別為社區版和商業版


我在這裡安裝的是社區版的GA版本 mysql-5.6.34


MySQL的安裝:

  1. 專用軟體包安裝RPM(Rhel SUSE CentoS)、Deb

  2. 通用二進位格式包gcc: X86、X_64

  3. 源碼編譯:在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的編譯安裝和基本配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.