一、簡介
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 最流行的關係型數據庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件之一。
MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件採用了雙授權政策,它分爲社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作爲網站數據庫。
由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。
二、準備
1、關閉selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2、安裝相關工具
yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison
3、軟件下載
下載MySQL:
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16.tar.gz
下載boost:
wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
4、 清理環境(從MySQL 5.7.5開始Boost庫是必需的)
檢查boost版本:
rpm -qa boost*
卸載boost-*等庫:
yum -y remove boost-*
5、卸載系統已經安裝的MySQL
查看安裝的MySQL
rpm -qa|grep -i mysql
卸載安裝的mysql
yum remove mysql
查看剩餘的安裝包
rpm -qa|grep -i mysql
逐個刪除安裝包
rpm -qa|grep -i mysql
rm -rf /etc/my.cnf
rm -rf /usr/share/mysql 或者rm -rf /var/lib/mysql 根據自己環境刪
6、創建mysql用戶, 組及目錄
groupadd mysql
mkdir /usr/local/mysql
mkdir -p /usr/local/mysql/data
useradd -g mysql -d /usr/local/mysql -s /sbin/nologin mysql
二、安裝
1、安裝boost
從MySQL 5.7.5開始Boost庫是必需的,下載Boost庫,在解壓後複製到/usr/local/boost目錄下(然後重新cmake並在後面的選項中加上選項 -DWITH_BOOST=/usr/local/boost)
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/boost
2、編譯安裝MySQL(新版本的mysql用cmake編譯安裝)
tar -zxvf mysql-5.7.16.tar.gz
cd mysql-5.7.16
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
常用參數:
CMAKE_INSTALL_PREFIX:指定MySQL程序的安裝目錄,默認/usr/local/mysql
DEFAULT_CHARSET:指定服務器默認字符集,默認latin1
DEFAULT_COLLATION:指定服務器默認的校對規則,默認latin1_general_ci
ENABLED_LOCAL_INFILE:指定是否允許本地執行LOAD DATA INFILE,默認OFF
WITH_COMMENT:指定編譯備註信息
WITH_xxx_STORAGE_ENGINE:指定靜態編譯到mysql的存儲引擎,MyISAM,MERGE,MEMBER以及CSV四種引擎默認即被編譯至服務器,不需要特別指定。
WITHOUT_xxx_STORAGE_ENGINE:指定不編譯的存儲引擎
SYSCONFDIR:初始化參數文件目錄
MYSQL_DATADIR:數據文件目錄
MYSQL_TCP_PORT:服務端口號,默認3306
MYSQL_UNIX_ADDR:socket文件路徑,默認/tmp/mysql.sock
3、編譯安裝
make && make install
4、設置權限並初始化MySQL系統授權表
設置權限:
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
初始化:
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
5、創建配置文件
將默認生成的my.cnf備份
mv /etc/my.cnf /etc/my.cnf.bak
拷貝配置文件模板爲新的mysql配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
可按需修改新的配置文件選項, 不修改配置選項, mysql則按默認配置參數運行.
如下是我修改配置文件/etc/my.cnf, 用於設置編碼爲utf8以防亂碼
[mysqld]
character_set_server=utf8
init_connect=’SET NAMES utf8’
[client]
default-character-set=utf8
6、配置mysql服務開機自動啓動
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
檢查自啓動項列表中沒有mysqld這個,如果沒有就添加mysqld:
chkconfig –list mysqld
chkconfig –add mysqld
設置MySQL在345等級自動啓動
chkconfig –level 345 mysqld on
或用這個命令設置開機啓動:chkconfig mysqld on #加入開機啓動
vi /etc/init.d/mysqld #編輯
basedir = /usr/local/mysql #MySQL程序安裝路徑
datadir = /usr/local/mysql/data #MySQl數據庫存放目錄
service mysqld start #啓動
vi /etc/profile #把mysql服務加入系統環境變量:在最後添加下面這一行
export PATH=$PATH:/usr/local/mysql/bin
:wq! #保存退出
7、下面這兩行把myslq的庫文件鏈接到系統默認的位置,這樣你在編譯類似PHP等軟件時可以不用指定mysql的庫文件地址。
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql 暫無此文件
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
8、shutdown -r now #需要重啓系統,等待系統重新啓動之後繼續在終端命令行下面操作
mysql_secure_installation #設置Mysql密碼
根據提示按Y 回車 ,然後輸入2次密碼,繼續按Y 回車,直到設置完成
或者直接修改密碼/usr/local/mysql/bin/mysqladmin -u root -p password “123456” #修改密碼
service mysqld restart #重啓
到此,mysql安裝完成!
9、mysql服務的啓動/重啓/停止
啓動mysql服務 :service mysqld start
重啓mysql服務:service mysqld restart
停止mysql服務:service mysqld stop
訪問mysql數據庫
連接mysql, 輸入初始化生成的隨機密碼
mysql -uroot -p
修改root新密碼如 123456
mysql> alter user ‘root’@’localhost’ identified by ‘123456’;
mysql> quit;
mysql> exit;(與上等效, 都是退出mysql連接)
使用新密碼重新連接mysql
mysql -uroot -p
14.設置遠程能訪問數據庫
使用mysql -h localhost -u root -p登錄mysql數據庫 執行
grant all privileges on . to root@’%’ identified by ‘密碼’ 使遠程用戶能夠訪問數據庫 ,執行命令 :flush privileges;