前言
mysql安裝方法有很多種,這里主要記錄windows系統zip格式安裝和 linux 源碼編譯的安裝
- windows版 mysql大概是5.7.11以上的綠色版 解壓就后沒有了my.default的配置文件如果沒有就手動創建
- linux編譯需要boost庫(推薦),等,官網也有帶boost庫的mysql源碼文件編譯時可以不指明boost庫
- 關于編譯參數路徑要統一,my.cnf中可以指明啟動服務加載的pid,sock。但客戶端連接時會有找不到sock的錯誤,如果確定sock生成嘗試在-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock 編譯的路徑下創建sock的軟連接。
- linux mysql安裝后通過basedir/bin/mysqld在datadir/初始化各種實例
- mysql加載my.cnf 順序為:/etc; ?/etc/mysql; ?/usr/local/mysql/etc/ 其它位置需要使用 #-defaults-file來指明。
- 使用systemctl 管理mysql啟動時可能會有連接超時的錯誤 ,把type=forking和PIDFile=path注釋掉就好
- centos7 最好先關閉防火墻。會有bad port的錯誤
準備
windows卸載
- windows版 /bin net stop msyql --停止服務
- mysqld --remove [mysql] --卸載服務
linux卸載
-
#rpm -qa| grep -i mysql --查看通過rpm 安裝的mysql
-
#yum -y remove mysql-* --卸載
-
#find / -name mysql --查找mysql相關文件
-
# rm -rf file --逐條刪除或者 #find / -name mysql|xargs rm -rf
-
#rpm -qa|grep mariadb --查找系統自帶的 mariadb相關包
-
#rpm -e file --卸載
安裝
- windows系統安裝
- 解壓文件
- 在解壓的根目錄創建mysql啟動文件 my.ini如下:
[mysqld]
basedir=yourpath
datadir=yourpath --data目錄必須為空,也可刪除
port=3306
character_set_server=utf8 - /bin/ mysqld --initialize-insecure --免密碼初始化
- mysqld --install 服務名 --完成安裝
- mysqld --remove 服務名 --卸載
- 基于centos7系統安裝(大致分兩步)
安裝依賴
- 下載1.59以上的boost庫最好不要使用yum安裝,版本太低。下載后不安裝也行,記住路徑,編譯時要用
- yum install -y gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl cmake
第一步 解壓文件,創建編譯腳本,編譯安裝
-
#tar -xf mysql-5.7.20.tar.gz --解壓文件
-
#cd mysql-5.7.20(解壓的目錄)
-
#vi cmake.sh ----創建編譯腳本寫入如下參數準備編譯詳情
!/bin/bash
cmake .
-DCMAKE_INSTALL_PREFIX=/home/mysql \ -- 安裝的目錄
-DMYSQL_DATADIR=/home/mysql/data \ --數據庫目錄
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \ --客戶端連接的sock文件
-DSYSCONFDIR=/home/mysql/etc \ --配置文件目錄
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DMYSQL_TCP_PORT=3306 \ --端口
-DDEFAULT_CHARSET=utf8 \ --字符集
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
-DDOWNLOAD_BOOST=1 \ --下載boost庫,如果帶boost庫的源碼可以不下載
-DWITH_BOOST=yourboost \ --指定你下載的boost庫路徑網上說可以不用的,我沒有成功
-DMYSQL_USER=mysql --用戶
-
#bash cmake.sh --執行腳本如圖表示成功
image.png -
#make && make install --進行編譯安裝如果編譯失敗就刪掉編譯緩存的文件重新編譯
image.png -
到此mysql安裝的目錄會有相關文件生成,查看bin目錄會有很多可執行的腳本,通過mysql/mysqld/mysqladmin/mysql_safe 等等執行腳本完成全部安裝,配置多實例。 image.png
第二步 創建用戶,用戶組,和相關目錄準備mysql初始化/配置多實例
-
#groupdd mysql --創建mysql用戶組
-
#useradd -g mysql mysql --為mysql組添加mysql用戶 (可省略)
-
#mkdir -p mysql/{data,logs,etc} --創建mysql 安裝目錄,數據庫初始化數據目錄,日志目錄,配置文件目錄
-
#chown -R mysql:mysql /home/mysql --把安裝目錄交給mysql用戶
-
#vi /home/mysql/my.cnf --編寫my.cnf腳本
[mysqld]
port=3306
dasedir=/home/mysql --mysql安裝目錄
datadir=/home/mysql/data --mysql初始化目錄
user=mysql
[client]
socket=/home/mysql/mysql.sock----指定端登錄進來去哪里找sock文件
-
#cd bin --進入mysql安裝的bin目錄
-
#./mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data -- 執行數據庫初始化
image.png -
# ./mysqld --defaults-file=/home/mysql/my.cnf --測試是否可以啟動mysql服務
image.png
還可以使用 ./mysql_safe --user=mysql --defaults-file=/home/mysql/my.cnf 或者在 /etc/init.d目錄創建mysql.server的軟連接時候用service start/stop來啟動(并不推薦)mysql4種啟動方法
-
#./mysqladmin -uroot -p shutdown --停止服務完成后續步驟。
如果無法回到命令行使用 Ctrl+\ /即可 此時mysqld的服務就結束了,并不會后臺運行。
-
#vi /usr/lib/systemd/system/mysqld.service --編寫mysql啟動腳本使用systemd 來管理(推薦)
[Unit] --主要包括對服務的說明可省略
Description=MySQL Server --描述
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target --描述服務類別
[Service] --是服務的關鍵 execstart/stop/reload指定啟動/停止/重啟,
Type=forking --后臺的形式運行
PIDFile= --存放pid的位置
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/home/mysql/my.cnf --啟動
ExecReload= --重啟
ExecStop= --停止
LimitNOFILE = 5000
User=mysql
Group=mysql
[Install] --安裝服務的相關設置
WantedBy=multi-user.target
-
#systemctl daemon-reload -- 加載更改的單元
-
#systemctl enable mysqld --開機啟動
-
#systemctl start mysqld --啟動
到此mysql已經安裝完成!
登陸
開啟公共端口 ,創建用戶遠程登陸
-
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
-
# firewall-cmd --reload
修改密碼,添加用戶遠程登陸詳情
-
set password = password('yourpassword') image.png
-
如果不是用初始密碼登陸比如--skip-grant-tables 參數 可以如下修改 image.png
image.png -
# show variables like '%char%'; //查看字符集
-
# set character_set_client/.....=utf8 //如果配置文件中錯誤可以通過命令設置
-
#show databases;
-
#use mysql;
-
#show tables;
-
# select host,user form user; --查看用戶登陸的權限
image.png -
#grant all privileges on databasename.tablename to 'username'@'host' identified by 'youpassword' --創建username用戶在databasename庫tablename表 進行增刪該查操作。databasename/tablename 用 * 代替,代表所有庫/表。host為% 允許所有連接。
-
#flush privileges --刷新
- 到此mysql 修改密碼遠程登陸已經完成。
配置多實例
-
#cd /home/mysql/data/ -- 進入datadir 的目錄
-
#mkdir -p data3307/{data,log} --創建3307實例的data目錄
-
#cd data3307 && vi my.cnf --創建my.cnf 文件,指定basedir,datadir,pid,sock的路徑
image.png -
#chown -R mysql:mysql data3307 --更改為mysql為所有者和組
- 進入basedir/bin下 執行初始化 同上,注意加載的是另一個my.cnf
-
通過.sock文件來登陸不同的實例 image.png
-
vi /usr/lib/systemd/system/mysqld3307.service 寫入啟動的service單元 image.png
-
#firewall-cmd --zone=public --add-port=3307/tcp --permanent(可省略) --開啟端口
-
#systemctl daemon-reload /enable/start --開機啟動
image.png - 可以重復以上,配置更多實例 到此mysql5.7.20 已經全部結束!
錯誤總結
-
sock 連接錯誤!檢查編譯的路徑是否和配置統一。或者在錯誤的路徑創建目標sock的軟連接 image.png
-
bad port的錯誤!暫時未解決image.png
-
如果啟動連接超時,日志又沒有報錯則注釋掉Tyep 、Pidfile 試試。image.png
到此結束后續更新 ---