日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

linux安装mysql5.6

發布時間:2023/12/10 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux安装mysql5.6 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

準備工作

運行環境

確認你的安裝版本

下載MySQL

安裝MySQL

準備安裝環境

編譯和安裝

配置MySQL

單實例配置

單實例配置方法

添加防火墻

啟動MySQL

重啟MySQL

多實例配置

什么是多實例

多實例配置方法

創建啟動文件

初始化數據庫

配置防火墻

啟動MySQL

登陸MySQL

重啟MySQL

準備工作

運行環境

本文的運行環境如下

系統版本

CentOS7最小化安裝:

Linux version 3.10.0-123.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat?4.8.2-16) (GCC) ) #1 SMP Mon Jun 30 12:09:22 UTC 2014

mysql版本

mysql-5.6.25


確認你的安裝版本

mysql分為開發版本和穩定版本(GA),開發版本擁有最新的特性,但是并不穩定,也沒有完全經過測試,可能存在嚴重的bug,而穩定版本是經過了長時間的測試,消除了具有已知的bug,其穩定性和安全性都得到一定的保障。

對于一個mysql的版本號如:mysql-5.6.1-m1,這個版本號意味著什么呢?
1.對于5.6.1的解釋:第一個數字5代表了文件格式,第二個數字6代表了發行級別,第三個數字1代表了版本號。更新幅度較小時,最后的數字會增加,出現了重大特性更新時,第二個數字會增加,文件格式改變時,第一個數字會增加?
2.對于m1的解釋:這是用來表明這個mysql版本的穩定性級別的,如果沒有這個后綴,那么這個版本就是一個穩定版(GA);如果這個后綴是mN(例如m1,m2)格式,表明了這個版本加入了一些經過徹底測試的新特性,可以認為這是一個試生產的模具;如果這個后綴是rc,表明了這是一個候選版本,已經修改了已知的重要bug,但是沒有經過足夠長時間的使用來確認所有的bug已經被修復。

一旦選擇了版本號,就要選擇使用哪個發行版,你可以使用二進制發行版如RPM包或Zip壓縮包等,但是如果你要實現如下的功能,就要選擇源碼安裝(本文正是選擇源碼安裝的方式):
1.l把mysq安裝到指定位置?
2.l使用mysql的一些特性(標準的二進制版本中并沒有這些特性)如:TCP封包支持,調試mysql?
3.二進制版本中默認支持所有的字符集,但你可以在編譯安裝源碼時指定字符集,從而使得安裝的mysql更小

下載mysql

在這里下載mysql:http://dev.mysql.com/downloads/mysql/

我選擇的是這個:

下載完后需要檢查文件的MD5,以確認是否從官網下載的原版本(以防被人篡改過該軟件)

我從windows下載后上傳到linux后,使用md5sum命令來檢查:

[root@localhost src]# md5sum mysql-5.6.25.tar.gz?
37664399c91021abe070faa700ecd0ed mysql-5.6.25.tar.gz

可以看出,與上圖中的MD5是一致的,如果不一致,就要更換一個鏡像地址來下載mysql。

安裝mysql

準備安裝環境

首先檢查是否已經安裝過mysql:

[root@localhost src]# rpm -qa | grep mysql

有的話就卸載掉以前安裝的mysql:

[root@localhost src]# rpm -e --nodeps xxx(xxx是搜索結果)

并刪除所有的相關文件:

/etc/my.cnf

編譯和安裝

安裝編譯代碼所需要的包

[root@localhost src]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio
[root@localhost src]# yum install libaio libaio-devel -y
[root@localhost src]# yum install perl-Data-Dumper -y
[root@localhost src]# yum install net-tools -y

解壓安裝包并編譯安裝

[root@localhost src]# tar xvf mysql-5.6.25.tar.gz
[root@localhost src]# cd mysql-5.6.25
[root@localhost mysql-5.6.25]#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 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=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

編譯成功

[root@localhost src]# make && make install

至此,mysql安裝完成

配置mysql

檢查系統是否已經有mysql用戶,如果沒有則創建

[root@localhost mysql-5.6.25]# cat /etc/passwd | grep mysql
[root@localhost mysql-5.6.25]# cat /etc/group | grep mysql

創建mysql用戶(但是不能使用mysql賬號登陸系統)

[root@localhost mysql-5.6.25]# groupadd mysql -s /sbin/nologin
[root@localhost mysql-5.6.25]# useradd -g mysql mysql

修改權限

[root@localhost mysql-5.6.25]# chown -R mysql:mysql /usr/local/mysql

至此,mysql安裝完畢

下面有兩種配置方式,推薦按照多實例配置的方式

單實例配置

單實例配置方法

進入安裝路徑

[root@localhost mysql-5.6.25]# cd /usr/local/mysql

進入安裝路徑,執行初始化配置腳本,創建系統自帶的數據庫和表

[root@localhost mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在啟動MySQL服務時,會按照一定次序搜索my.cnf,先在/etc目錄下找,找不到則會搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,這是新版MySQL的配置文件的默認位置!

注意:在CentOS 7版操作系統的最小安裝完成后,在/etc目錄下會存在一個my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啟動。

在使用"yum update"更新系統后,需要檢查下/etc目錄下是否會多出一個my.cnf,如果多出,將它重命名成別的。否則,MySQL將使用這個配置文件啟動,可能造成無法正常啟動等問題。

添加防火墻

[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost mysql]# firewall-cmd --reload
?

啟動mysql

添加服務,拷貝服務腳本到init.d目錄,并設置開機啟動

?

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql]# chkconfig mysql on
[root@localhost mysql]# service mysql start --啟動MySQL

?

查看mysql是否啟動成功

[root@localhost mysql]# netstat -lntp | grep 3306

如果mysql沒有啟動成功,到目錄/usr/local/mysql/data下查看錯誤日志

[root@localhost data]# tail localhost.localdomain.err (localhost.localdomain是主機名)

如果沒有生成日志目錄,則mysql安裝沒有成功(再重新編譯安裝一次)

重啟mysql

首先殺死mysql進程

[root@localhost 3306]# pkill mysqld

然后檢查是否已經殺死mysql進程

[root@localhost 3306]# netstat -lntp | grep 3306

此時shell沒有任何輸出,表明已經殺死了mysql進程

然后重啟mysql并再次檢查是否啟動成功

[root@localhost 3306]# service mysql start
[root@localhost 3306]# netstat -lntp | grep 3306

?

多實例配置

什么是多實例

簡單地說,就是在一臺機器上開啟多個不同的服務端口,運行多個mysql服務進程,這些服務進程通過不同socket監聽不同服務端口來提供各自的服務。

這些mysql多實例公用一套mysql安裝程序,使用不同的my.cnf配置文件、啟動程序、數據文件,在提供服務時,多實例在邏輯上看起來是各自獨立的,多個實例之間根據配置文件的設定值,來取得相關服務器的硬件資源

多實例配置方法

在本文中,通過在mysql上開啟兩個端口(3306和3307來配置多實例,因為下面的主從同步要使用這兩個端口來模擬)

創建目錄(log目錄是存放mysql日志的地方)

[root@localhost mysql]# mkdir -p /data/{3306,3307}/data
[root@localhost mysql]# mkdir -p /data/{3306,3307}/log

在/data/3306中新建my.cnf

[root@localhost mysql]# cd /data/3306
[root@localhost mysql]# vi my.cnf

把如下內容拷貝到該文件中

?

[client]
port = 3306
socket = /data/3306/mysql.sock

[mysqld]
port=3306
socket = /data/3306/mysql.sock
pid-file = /data/3306/data/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3306/data
server-id=1
#log-bin=mysql-bin
#log-bin-index= mysql-bin.index

# LOGGING
log_error=/data/3306/log/mysql-error.log
slow_query_log_file=/data/3306/log/mysql-slow.log
slow_query_log=1

?

同樣地,在/data/3307中新建my.cnf

[root@localhost mysql]# cd /data/3307
[root@localhost mysql]# vi my.cnf

把如下內容拷貝到該文件中(把上面的3306改為3307,還有server-id的值)

?

[client]
port = 3307
socket = /data/3307/mysql.sock

[mysqld]
port=3307
socket = /data/3307/mysql.sock
pid-file = /data/3307/data/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3307/data
server-id=3
#log-bin=mysql-bin
#log-bin-index= mysql-bin.index

# LOGGING
log_error=/data/3307/log/mysql-error.log
slow_query_log_file=/data/3307/log/mysql-slow.log
slow_query_log=1

?

檢查一下目錄結構,看看有沒有把文件放錯地方

?

[root@localhost 3307]# tree /data
/data
├── 3306
│ ├── data
│ ├── log
│ └── my.cnf

└── 3307
│ ├── data
│ ├── log
│ └── my.cnf

?

創建啟動文件

在/data/3306中新建mysql啟動文件

[root@localhost mysql]# cd /data/3306
[root@localhost mysql]# vi mysql

把如下內容拷貝到該文件中

?

#!/bin/sh
port=3306
mysql_user="root"
mysql_pwd=""
CmdPath="/usr/local/mysql/bin"

#startup function

function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
}

#stop function

function_stop_mysql()
{
printf "Stoping MySQL...\n"
${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
}

#restart function

function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;

stop)
function_stop_mysql
;;

restart)
function_restart_mysql
;;
*)

printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

?

同理,在/data/3307中新建mysql啟動文件

[root@localhost mysql]# cd /data/3307
[root@localhost mysql]# vi mysql

把如下內容拷貝到該文件中

?

#!/bin/bash

port=3307
mysql_user="root"
mysql_pwd=""
CmdPath="/usr/local/mysql/bin"

#startup function

function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
}

#stop function

function_stop_mysql()
{
printf "Stoping MySQL...\n"

${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
}

#restart function

function_restart_mysql()
{
printf "Restarting MySQL...\n"

function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

?

修改文件擁有者和權限

[root@localhost 3307]# chown -R mysql:mysql /data

[root@localhost 3307]# find /data -name mysql -exec chmod 700 {} \;

添加mysql啟動路徑

?

[root@localhost 3307]# echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile

[root@localhost 3307]# source /etc/profile

[root@localhost 3307]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

?

可以看到mysql路徑已經添加到了啟動路徑中

初始化數據庫

?

[root@localhost scripts]# cd /usr/local/mysql/scripts

[root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3306/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

[root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data

?

配置防火墻

?

[root@localhost scripts]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success

[root@localhost scripts]# firewall-cmd --zone=public --add-port=3307/tcp --permanent
success

[root@localhost scripts]# firewall-cmd --reload
success

?

啟動mysql

分別啟動兩個端口

?

[root@localhost scripts]# /data/3306/mysql start
Starting MySQL...

[root@localhost scripts]# /data/3307/mysql start
Starting MySQL...

[root@localhost scripts]# netstat -lntp | grep 330
tcp6 0 0 :::3306 :::* LISTEN 33556/mysqld
tcp6 0 0 :::3307 :::* LISTEN 34204/mysqld

?

可以看到兩個端口都已經啟動成功

登陸mysql

剛安裝完的mysql是沒有登陸密碼的

[root@localhost scripts]# mysql -S /data/3306/mysql.sock

如果不成功,檢查/data/3306/log目錄下的mysql-error.log日志,逐一排除錯誤

如果登陸成功,下面就修改登錄密碼(不建議在shell環境下修改密碼,否則別人只要查看命令歷史就能看到密碼(前提是你沒有情況命令歷史))

mysql> update mysql.user set password=password("123456") where user='root';
mysql> flush privileges;

同理,使用上面的方法修改3307的登陸密碼

要把上面更改后的密碼寫回到mysql的啟動文件中(否則每次啟動、關閉、重啟mysql都要輸入密碼)

[root@localhost 3306]# sed -i 's/mysql_pwd=\"\"/mysql_pwd=\"123456\"/g' /data/3306/mysql
[root@localhost 3306]# sed -i 's/mysql_pwd=\"\"/mysql_pwd=\"123456\"/g' /data/3307/mysql

注意把上面的123456改為設置的密碼

重啟mysql

[root@localhost 3306]# /data/3306/mysql restart
[root@localhost 3306]# netstat -lntp | grep 330
tcp6 0 0 :::3306 :::* LISTEN 35430/mysqld

可以看到3306端口重啟成功,同理可以重啟3307端口

至此,mysql-5.6.25在CentOS7上安裝完畢

--------------------------------------分割線 --------------------------------------

?

補充:

4. 配置以及初始化MySQL
# cd /usr/local/mysql
4.1 設置MySQL安裝目錄的權限
# chown -R mysql:mysql /usr/local/mysql
4.2 初始化MySQL
# scripts/mysql_install_db --user=mysql
# cp support-files/mysql.server /etc/init.d/mysqld
4.3 重新設置MySQL安裝目錄的權限(除data目錄外,其余所有目錄及文件均修改用戶為root,組不變)
# chown -R root .
# chown -R mysql data
4.4 啟動mysql_safe
# bin/mysqld_safe --user=mysql &
4.5 設置MySQL的root帳號密碼
- 自動設置:# ./bin/mysql_secure_installation

- 手動置:# ./bin/mysqladmin -u root password '<PASSWORDHERE>'

?

?

?

授權法。例如,你想myuser使用mypassword從任何主機連接到mysql服務器的話。?
  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;?
  如果你想允許用戶myuser從ip為192.168.1.6的主機連接到mysql服務器,并使用mypassword作為密碼?
  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY?
  'mypassword' WITH GRANT OPTION;?
  我用的第一個方法,剛開始發現不行,在網上查了一下,少執行一個語句 mysql>FLUSH RIVILEGES?
  使修改生效,就可以了

轉載于:https://www.cnblogs.com/zhaosiwen/p/5824271.html

總結

以上是生活随笔為你收集整理的linux安装mysql5.6的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。