mysql5.7的安裝筆記

前言

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 --卸載
安裝
  1. windows系統安裝
  • 解壓文件
  • 在解壓的根目錄創建mysql啟動文件 my.ini如下:
    [mysqld]
    basedir=yourpath
    datadir=yourpath --data目錄必須為空,也可刪除
    port=3306
    character_set_server=utf8
  • /bin/ mysqld --initialize-insecure --免密碼初始化
  • mysqld --install 服務名 --完成安裝
  • mysqld --remove 服務名 --卸載
  1. 基于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 --用戶

image.png

  • #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

image.png

  • #systemctl daemon-reload -- 加載更改的單元
  • #systemctl enable mysqld --開機啟動
  • #systemctl start mysqld --啟動
image.png

到此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 --刷新
image.png
  • 到此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

到此結束后續更新 ---

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容