官方文檔部署MySQL 5.7
將mysql二進制包移動到/usr/local目錄下
顯示目錄顏色
[root@ceshiji ~]# apt-get install lrzsz
[root@ceshiji /]# tail /etc/profile ###顯示目錄顏色
export LS_OPTIONS='--color=auto'
eval `dircolors`
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
MySQL安裝包
[root@mysql-193 local]# ll -h mysql-5.7.17-linux-glibc2.5-x86_64.tar
-rw-r--r-- 1 zhangya zhangya 652M 6月 27 23:19 mysql-5.7.17-linux-glibc2.5-x86_64.tar
MySQL源碼包下載
鏈接:http://pan.baidu.com/s/1i5Fvnal 密碼:zkwz
解壓
[root@ceshiji local]# tar xf mysql-5.7.17-linux-glibc2.5-x86_64.tar
安裝依賴
[root@mysql-193 local]# apt-cache search libaio #查找依賴包信息
[root@mysql-193 local]# apt-get install libaio1 # install library #安裝依賴包
添加mysql組
[root@mysql-193 local]# groupadd mysql
添加mysql用戶並且禁止登錄
[root@mysql-193 local]# useradd -r -g mysql -s /bin/false mysql
創建數據庫目錄
[root@mysql-193 mysql]# mkdir -p /data/mysql_data
解壓mysql安裝包
[root@mysql-193 local]# cd /usr/local
root@ceshiji local]# tar vxf mysql-5.7.17-linux-glibc2.5-x86_64.tar
[root@ceshiji local]# rm mysql-5.7.17-linux-glibc2.5-x86_64.tar mysql-test-5.7.17-linux-glibc2.5-x86_64.tar.gz
[root@mysql-193 local]# tar zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
創建軟鏈接
[root@mysql-193 local]# ln -s /usr/local/mysql-5.7.17-linux-glibc2.5-x86_64 mysql
查看創建結果
[root@mysql-193 local]# ll mysql
lrwxrwxrwx 1 root staff 45 6月 27 23:58 mysql -> /usr/local/mysql-5.7.17-linux-glibc2.5-x86_64
修改mysql目錄的權限以及所屬用戶及組屬性相關(官網)
[root@mysql-193 local]# cd mysql
[root@mysql-193 mysql]# mkdir mysql-files
[root@mysql-193 mysql]# chmod 750 mysql-files
[root@mysql-193 mysql]# chown -R mysql . ##只修改文件屬主
[root@mysql-193 mysql]# chgrp -R mysql . #修改文件屬組
初始化數據庫
#注意! 5.7版本以后的初始化命令和5.6有區別
#使用老命令初始化的報錯內容如
[root@mysql-193 mysql]# bin/mysql_install_db --user=mysql
2017-06-28 00:10:11 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2017-06-28 00:10:11 [ERROR] The data directory needs to be specified.
#使用新的初始化命令
[root@mysql-193 mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data
注意, 這里最后一行最后面會提示一個字符串,這個是mysql5.7以后的安全策略,會生成一個root的隨機密碼
......
2017-06-27T16:14:05.150862Z 1 [Note] A temporary password is generated for root@localhost: 1Diwj2r(pN-k
把目錄所屬者權限修改回root
[root@mysql-193 mysql]# chown -R root .
修改數據庫目錄的所屬者為mysql
[root@mysql-193 mysql]# chown -R mysql /data/
[root@mysql-193 mysql]# ll /data/
drwxr-xr-x 5 mysql mysql 4096 6月 28 00:14 mysql_data
拷貝復制配置文件到/etc/my.cnf
[root@mysql-193 mysql]# grep -v "^#" support-files/my-default.cnf >/data/mysql_data/my.cnf
修改配置文件
[root@mysql-193 mysql]# vim /data/mysql_data/my.cnf
[root@mysql-193 mysql]# cat /data/mysql_data/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql_data
port = 3306
socket = /tmp/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
啟動mysql服務
[root@mysql-193 mysql]# bin/mysqld_safe --defaults-file=/data/mysql_data/my.cnf --user=mysql --pid-file=/data/mysql_data/mysqld_safe.pid --log-error=/data/mysql_data/mysql.err.log &
查看進程
[root@mysql-193 ~]# ps -ef|grep mysqld
root 3113 775 0 00:59 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql_data/my.cnf --user=mysql --pid-file=/data/mysql_data/mysqld_safe.pid --log-error=/data/mysql_data/mysql.err.log
mysql 3287 3113 0 00:59 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql_data/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql_data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql_data/mysql.err.log --pid-file=/data/mysql_data/mysqld_safe.pid --socket=/tmp/mysql.sock --port=3306
root 3333 1275 0 01:00 pts/1 00:00:00 grep mysqld
將mysql命令加入環境變量
[root@mysql-193 ~]# tail -2 /etc/profile
PATH=$PATH:/usr/local/mysql:/usr/local/mysql/bin
[root@mysql-193 ~]# source /etc/profile
再次輸入mysql發現已經可以補全了
[root@mysql-193 ~]# mysql
登錄數據庫
[root@mysql-193 ~]# mysql -uroot -p'1Diwj2r(pN-k'
這時使用命令會提示需要修改密碼,所以這里修改數據庫默認密碼
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user 'root'@'localhost' identified by 'goumin123';
Query OK, 0 rows affected (0.00 sec)
mysql>exit
使用新密碼登錄
[root@mysql-193 ~]# mysql -uroot -p'goumin123'
mysql>
腳本文件一鍵安裝
[root@ceshiji ~]# cat 101.sh
#下載依賴包
apt-get install libaio1
apt-get install lrzsz
#添加mysql用戶和組
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
#創建mysql數據目錄
mkdir -p /data/mysql_data
#解壓mysqltar包
cd /usr/local
tar xf mysql-5.7.17-linux-glibc2.5-x86_64.tar
rm -f mysql-5.7.17-linux-glibc2.5-x86_64.tar mysql-test-5.7.17-linux-glibc2.5-x86_64.tar.gz
tar zxf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
#創建軟連接
ln -s /usr/local/mysql-5.7.17-linux-glibc2.5-x86_64 mysql
#修改mysql目錄權限和創建文件
cd /usr/local
cd mysql
mkdir mysql-files
chmod 750 mysql-files
chown -R mysql:mysql .
#初始化mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data >/tmp/mima.txt 2>&1
#修改mysql軟件目錄權限
chown -R root.staff /usr/local/mysql
#修改mysql數據目錄權限
chown -R mysql.mysql /data/
#拷貝配置文件
cd /usr/local
cd mysql
grep -v "^#" support-files/my-default.cnf >/data/mysql_data/my.cnf
#修改配置文件
cat>/data/mysql_data/my.cnf<<EOF
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql_data
port = 3306
socket = /tmp/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
EOF
#將mysql命令加入環境變量
echo 'PATH=$PATH:/usr/local/mysql:/usr/local/mysql/bin' >> /etc/profile
#啟動mysql服務
bin/mysqld_safe --defaults-file=/data/mysql_data/my.cnf --user=mysql --pid-file=/data/mysql_data/mysqld_safe.pid --log-error=/data/mysql_data/mysql.err.log &
執行步驟
1. 將mysql安裝包放到/usr/local中
2. 執行安裝啟動腳本
3. 執行source生效全局環境變量命令
4. 進入/tmp目錄查看密碼
5. 執行命令修改密碼
mysql -uroot -pPASSWORD --connect-expired-password -e "alter user 'root'@'localhost' identified by 'goumin123';"
6. 登錄數據庫驗證
mysql -uroot -pgoumin123