Linux CentOS7 下安裝 Mysql5.7 並設置自啓動

安裝軟件:mysql5.7

說明:使用官方編譯好的二進制文件進行安裝

1.檢查操作系統是否自帶mysql

[root@localhost local]# rpm -qa|grep mysql
mysql-libs-5.1.73-8.el6_8.x86_64

比如我這裏自帶了一個mysql。

使用yum命令,因爲yum命令可以自動刪除與mysql相關的依賴;如果使用rpm命令,則還需要手動去刪除和mysql相關的文件

[root@localhost local]# yum -y remove mysql-libs-5.1.73-8.el6_8.x86_64

檢查刪除是否成功。如果沒有提示則刪除成功。

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

2.下載mysql5.7

mysql官網 https://dev.mysql.com/downloads/mysql/5.7.html#downloads

將下載的安裝包"mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz"利用xftp上傳至/usr/local下解壓

[root@localhost local]# tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

順手刪除mysql5.7的源碼包

[root@localhost local]# rm -f mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

修改文件名

[root@localhost local]# mv mysql-5.7.21-linux-glibc2.12-x86_64/ mysql57

進入/mysql57創建data文件夾

[root@localhost local]# cd mysql57/
[root@localhost mysql57]# mkdir data

3.創建mysql用戶組和mysql用戶

#查看有沒有mysql組
[root@localhost mysql57]# cat /etc/group | grep mysql
查看有沒有mysql用戶
[root@localhost mysql57]# cat /etc/passwd |grep mysql
若沒有則創建mysql組
#創建mysql用戶組
[root@localhost mysql57]# groupadd mysql
#創建mysql用戶並添加到mysql用戶組中(//useradd -r參數表示mysql用戶是系統用戶,不可用於登錄系統;第一個mysql是用戶組,第二個mysql是用戶) 
[root@localhost mysql57]# useradd -r -g mysql mysql
#檢查用戶組是否創建成功
[root@localhost mysql57]# groups mysql

4.設置mysql目錄訪問權限,用戶組

#將mysql目錄訪問權限賦爲myql用戶
[root@localhost mysql57]# chown -R mysql /usr/local/mysql57
#改變mysql目錄的用戶組屬於mysql組
[root@localhost mysql57]# chgrp -R mysql /usr/local/mysql57
#查看mysql目錄下所有的目錄及文件夾所屬組合用戶
[root@localhost mysql57]# cd /usr/local/mysql57
[root@localhost mysql57]# ll
total 56
drwxr-xr-x  2 mysql mysql  4096 Aug 11 21:24 bin
-rw-r--r--  1 mysql mysql 17987 Dec 28  2017 COPYING
drwxr-xr-x  2 mysql mysql  4096 Aug 11 21:40 data
drwxr-xr-x  2 mysql mysql  4096 Aug 11 21:24 docs
drwxr-xr-x  3 mysql mysql  4096 Aug 11 21:23 include
drwxr-xr-x  5 mysql mysql  4096 Aug 11 21:24 lib
drwxr-xr-x  4 mysql mysql  4096 Aug 11 21:23 man
-rw-r--r--  1 mysql mysql  2478 Dec 28  2017 README
drwxr-xr-x 28 mysql mysql  4096 Aug 11 21:24 share
drwxr-xr-x  2 mysql mysql  4096 Aug 11 21:24 support-files

5.配置mysql

創建以下文件,設置訪問權限,用於mysql配置中

第一步:創建文件/tmp/mysql.sock。並設置權限

創建文件

[root@localhost mysql57]# mkdir tmp
[root@localhost mysql57]# cd tmp
[root@localhost tmp]# ll
total 0
[root@localhost tmp]# touch mysql.sock
[root@localhost tmp]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 11 21:59 mysql.sock

設置權限

[root@localhost tmp]# chown -R mysql:mysql /usr/local/mysql57/tmp/mysql.sock
[root@localhost tmp]# chmod 755 /usr/local/mysql57/tmp/mysql.sock

第二步:創建/log/mysqld.log。並設置權限

[root@localhost mysql57]# mkdir log
[root@localhost mysql57]# cd log
[root@localhost log]# ll
total 0
[root@localhost log]# touch mysqld.log
[root@localhost log]# chown -R mysql:mysql /usr/local/mysql57/log/mysqld.log
[root@localhost log]# chmod 755 /usr/local/mysql57/log/mysqld.log

如果出錯,說明路徑沒有寫全,要寫絕對路徑

第三步:創建/tmp/mysqld.pid。並設置權限

[root@localhost log]# cd ../tmp
[root@localhost tmp]# touch mysqld.pid
[root@localhost tmp]# chown -R mysql:mysql /usr/local/mysql57/tmp/mysqld.pid 
[root@localhost tmp]# chmod 755 /usr/local/mysql57/tmp/mysqld.pid 

6.初始化mysql

[root@localhost mysql57]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql57/ --datadir=/usr/local/mysql57/data/

配置SSL參數(在mysql目錄下)

[root@localhost mysql57]# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql57/data/

由於mysql-5.7.23版本my.cnf不在/support-files下,故我們創建my.cnf文件。

[root@localhost mysql57]# touch /etc/my.cnf
[root@localhost mysql57]# vim /etc/my.cnf

複製如下內容(每個人安裝路徑可能不一樣,需要修改):

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql57
datadir=/usr/local/mysql57/data
port = 3306
socket=/tmp/mysql.sock
log-error=/usr/local/mysql57/log/mysqld.log
pid-file=/usr/local/mysql57/tmp/mysqld.pid
#表名不區分大小寫
lower_case_table_names = 1
max_connections=5000
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

配置mysql自動啓動(可根據需要配置)

[root@localhost mysql57]# cp support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql57]# vim /etc/init.d/mysql

若配置了mysql自啓動方式則可以使用服務方式啓動mysql

#查看mysql狀態
/etc/init.d/mysql status 或者 service mysql status
#啓動mysql
/etc/init.d/mysql start 或者 service mysql start
#停止mysql
/etc/init.d/mysql stop 或者 service mysql stop
#重新啓動mysql
/etc/init.d/mysql restart 或者 service mysql restart
查看mysql服務說明啓動成功
ps -ef|grep mysql

啓動mysql

[root@localhost tmp]# service mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql57/tmp/mysqld.pid).

報錯了,上面說沒有/usr/local/mysql57/tmp/mysqld.pid。

解決方案:

a)創建文件/usr/local/mysql57/tmp/mysqld.pid

b)修改權限

修改存放mysqld.pid文件目錄的權限

chown -R mysql /usr/local/mysql57/tmp
chgrp -R mysql /usr/local/mysql57/tmp
chmod 777 /usr/local/mysql57/tmp

重新啓動成功(如果還不行,就是中間某個步驟寫錯了。或者直接把mysql目錄權限賦爲777)

[root@localhost tmp]# /etc/init.d/mysql start
Starting MySQL. SUCCESS! 

8.配置mysql到環境變量

[root@localhost tmp]# vim /etc/profile
export MYSQL57_HOME=/usr/local/mysql57/bin #mysql5.7/bin路徑
export PATH=$PATH:${MYSQ57_HOME}

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

9.mysql忘記密碼

切換到mysql下的bin目錄

[root@localhost bin]# ./mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

密碼錯誤。。而且之前安裝的密碼也忘記了

解決方案:

第一步:跳過MySQL的密碼認證過程
(注:windows下修改的是my.ini)
 

[root@localhost bin]# #vim /etc/my.cnf

保存並退出(esc--> :wq)

第二步:重啓mysql

[root@localhost bin]# /etc/init.d/mysql restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!

第三步:登錄mysql
進入mysql/bin目錄,啓動mysql

[root@localhost bin]# ./mysql
啓動成功

  

第四步:使用sql語句修改密碼

mysql> use mysql;
mysql> update user set authentication_string=password("你的新密碼") where user="root";
mysql> flush privileges;
mysql> quit


 注意:mysql5.7沒有password字段

ERROR 1054 (42S22): Unknown column 'password' in 'field list'
第五步:重新編輯my.cnf
去掉[mysqld]後面的“skip-grant-tables”

[root@localhost bin]# vim /etc/my.cnf 


重啓mysql

[root@localhost bin]# /etc/init.d/mysql restart

10.設置mysql遠程登錄
先本地登錄mysql

[root@localhost bin]# ./mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


10.1報錯
 突然報錯

 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

mysql> use mysql
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解決方案:需要重新修改一下密碼

mysql> alter user 'root'@'localhost' identified by '修改的密碼';
mysql> flush privileges;
mysql> quit;


10.2繼續配置

mysql> use mysql;
mysql> update  user  set host='%' where user='root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES; 
mysql> quit;

  

10.3重啓mysql

[root@localhost bin]# service mysql restart;

 

10.4設置防火牆
a)配置防火牆開啓3306端口

[root@localhost bin]# /sbin/iptables -I INPUT -p tcp --dport 3306-j ACCEPT
[root@localhost bin]# /etc/rc.d/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:   [  OK  ]
[root@localhost bin]# /etc/rc.d/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: filter             [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                           [  OK  ]
iptables: Applying firewall rules:                        [  OK  ]


b)臨時關閉防火牆

[root@localhost bin]# service iptables stop


c)永久關閉防火牆

 重啓後永久生效

[root@localhost bin]# chkconfig iptables off

10.5遠程連接mysql

連接成功

 

 

Mysql 自動啓動

1、將服務文件拷貝到init.d下,並重命名爲mysql

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

2、賦予可執行權限

chmod +x /etc/init.d/mysqld

3、添加服務

chkconfig --add mysqld

4、顯示服務列表

chkconfig --list

如果看到mysql的服務,並且3,4,5都是on的話則成功,如果是off,則鍵入

chkconfig --level 345 mysqld on

5、重啓電腦

reboot

6、驗證

netstat -na | grep 3306

如果看到有監聽說明服務啓動了

或者用ps -ef|grep mysql 或者 service mysqld status

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章