Linux環境 MySQL 5.7 安裝部署
建立安裝目錄
cd /usr/local/
mkdir mysql
cd mysql
下載安裝包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
解壓安裝包
tar vxzf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
配置mysql
建立mysql執行對應的使用者和使用者組,並建立資料庫
建立使用者mysql,組mysql 。後面mysql就使用這個使用者來執行
(注意這也是mysql啟動指令碼中預設的使用者,因此最好不要改名,使用-r引數表示mysql使用者是一個系統使用者,不能登入)
groupadd mysql
useradd -r -g mysql mysql
建立資料庫目錄
mkdir -p /var/mysql/data
chown -R mysql:mysql /var/mysql
cd /usr/local/mysql/mysql-5.7.18-linux-glibc2.5-x86_64
初始化資料庫
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.18-linux-glibc2.5-x86_64 --datadir=/var/mysql/data
如果出現以下錯誤:
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file:
解決方法:
[[email protected]]# yum install -y libaio // 安裝後在初始化就可以了
把mysql加入搜尋路徑
在/etc/profile中增加以下行,把mysql加入搜尋路徑
# mysql export MYSQL_HOME=/usr/local/mysql/mysql-5.7.18-linux-glibc2.5-x86_64 export PATH=${MYSQL_HOME}/bin:$PATH
source /etc/profile 使配置檔案生效
配置mysql
拷貝mysql配置檔案
cd /usr/local/mysql/mysql-5.7.18-linux-glibc2.5-x86_64
cp support-files/my-default.cnf /etc/my.cnf
如果不存在my.cnf,則不用拷貝,直接修改 /etc/my.cnf檔案
修改my.cnf,主要配置如下
[mysqld]
datadir=/var/mysql/data
socket=/var/mysql/data/mysql.sock
Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
interactive_timeout=3000
wait_timeout=3000
character-set-server=utf8
collation-server=utf8_general_ci
#Settings user and group are ignored when systemd is used.
#If you need to run mysqld under a different user or group,
#customize your systemd unit file for mariadb according to the
#instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
# log-error=/var/log/mariadb/mariadb.log
# pid-file=/var/run/mariadb/mariadb.pid
log-error=/var/log/mysql/mysql.log
pid-file=/var/mysql/data/mysql.pid
[client]
socket=/var/mysql/data/mysql.sock
# include all files from the config directory
!includedir /etc/my.cnf.d
為mysql的log準備空間
cd /var/log
mkdir mysql
chown -R mysql:mysql ./mysql/
配置系統啟動後自動啟動mysqld
拷貝mysqld的配置檔案
cd /usr/local/mysql/mysql-5.7.18-linux-glibc2.5-x86_64
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
修改/etc/init.d/mysqld
vim /etc/init.d/mysqld,把其中兩行修改為:
basedir=/usr/local/mysql/mysql-5.7.18-linux-glibc2.5-x86_64
datadir=/var/mysql/data
設定開機啟動,並啟動
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
檢查mysqld服務已經啟動
ps -ef|grep mysqld
netstat -lnp | grep -i mysql
[[email protected] mysql-5.7.18-linux-glibc2.5-x86_64]# netstat -anp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 9897/mysqld
[[email protected] mysql-5.7.18-linux-glibc2.5-x86_64]# service mysqld status
MySQL running (9897) [ OK ]
[[email protected] mysql-5.7.18-linux-glibc2.5-x86_64]#
客戶端連線測試
cd /usr/local/mysql/mysql-5.7.18-linux-glibc2.5-x86_64
bin/mysql -uroot -p
如果出現錯誤:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘***’ (2)
解決辦法 :
確定“socket”檔案正確位置:
確定mysql服務正常執行後,產生此錯誤的原因只剩下“socket”檔案路徑不正確了,我們可以使用“find”命令或者“lsof”命令來確定socket檔案的正確路徑:
[[email protected] mysql-5.7.18-linux-glibc2.5-x86_64]# find / -name '*.sock'
/var/mysql/data/mysql.sock
修改“/etc/my.cnf”配置檔案,在配置檔案中新增“[client]”選項和“[mysql]”選項,並使用這兩個選項下的“socket”引數值,與“[mysqld]”選項下的“socket”引數值,指向的socket檔案路徑完全一致。如下:
...
[client]
default-character-set=utf8
socket=/var/mysql/data/mysql.sock
[mysql]
default-character-set=utf8
socket=/var/mysql/data/mysql.sock
可參考:http://aiezu.com/article/mysql_cant_connect_through_socket.html
修改mysql的登入密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abcdefg12345l';