Mysql5.7-CentOS7安裝


下載Mysql

官網地址,點擊download,找到Community

選擇MySQL Community Server

選擇平台和版本下載即可

安裝mysql

查看安裝文檔

在下載頁面上面有安裝指南

選取指定的平台,查看安裝步驟

進入到安裝指南頁面,warning大概翻譯就是,如果之前安裝過mysql,比如通過yum或者apt安裝,那估計這次就很難裝。

 Important翻譯大概是,mysql依賴libaio這個library。如果沒有安裝,那么安裝會失敗。

刪除自帶的mariadb,卸載后/etc/my.cnf將不存在!!!初始化及啟動要自己指定參數,不推薦卸載!!!

[root@localhost mysql]# rpm -qa|grep mariadb   #查找是否安裝mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@localhost mysql]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64    #卸載mariadb
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave

解壓創建軟連接,改變文件所屬用戶及組(單獨設data的所屬用戶名和組即可)

tar zxvf /path/to/mysql-VERSION-OS.tar.gz     #將tar壓縮文件解壓到當前文件夾
ln -s /usr/local/mysql_5.7.0 mysql    #把解壓后的文件軟連接mysql,軟連接mysql文件在/usr/local下面,或者重命名也可以

groupadd mysql       #添加一個用戶組
useradd -r -g mysql -s /bin/false mysql      #添加一個用戶
cd /usr/local    #進入到文件夾
cd mysql    #進入到mysql,mysql為軟連接
mkdir data     #新建一個data文件夾
chown mysql:mysql data    #data文件夾指定所屬的用戶和組,
chmod 750 data     #為這個文件賦予權限

#創建日志目錄,mariadb里配置的文件,沒有mariadb則不需要
mkdir /usr/local/mysql/logs 
chown -R mysql:mysql /usr/local/mysql/logs 
echo "" > /usr/local/mysql/logs/mysql.log
chown -R mysql:mysql /usr/local/mysql/logs/mysql.log chmod 777 /usr/local/mysql/logs/mysql.log  #給日志寫權限
[root
@localhost mysql]# chown -R mysql . #改變當前文件夾所屬用戶,可以不設,單獨設data的所屬也可以 [root@localhost mysql]# ll total 36 drwxr-xr-x 2 mysql root 4096 May 16 17:40 bin -rw-r--r-- 1 mysql 31415 17987 Mar 4 08:40 COPYING drwxr-x--- 5 mysql mysql 202 May 17 20:54 data drwxr-xr-x 2 mysql root 55 May 16 17:40 docs drwxr-xr-x 3 mysql root 4096 May 16 17:40 include drwxr-xr-x 5 mysql root 229 May 16 17:40 lib drwxr-xr-x 4 mysql root 30 May 16 17:40 man -rw-r--r-- 1 mysql 31415 2478 Mar 4 08:40 README drwxr-xr-x 28 mysql root 4096 May 16 17:40 share drwxr-xr-x 2 mysql root 90 May 16 17:40 support-files [root@localhost mysql]# chgrp -R mysql . #改變當前文件夾所屬組 [root@localhost mysql]# ll total 36 drwxr-xr-x 2 mysql mysql 4096 May 16 17:40 bin -rw-r--r-- 1 mysql mysql 17987 Mar 4 08:40 COPYING drwxr-x--- 5 mysql mysql 202 May 17 20:54 data drwxr-xr-x 2 mysql mysql 55 May 16 17:40 docs drwxr-xr-x 3 mysql mysql 4096 May 16 17:40 include drwxr-xr-x 5 mysql mysql 229 May 16 17:40 lib drwxr-xr-x 4 mysql mysql 30 May 16 17:40 man -rw-r--r-- 1 mysql mysql 2478 Mar 4 08:40 README drwxr-xr-x 28 mysql mysql 4096 May 16 17:40 share drwxr-xr-x 2 mysql mysql 90 May 16 17:40 support-files

安裝配置

 配置,修改/etc/my.cnf文件,此文件作為初始化和啟動時的參數,datadir默認為/var/lib/mysql,卸載mariadb后無此文件,需要自己添加。

[mysqld]
basedir=/usr/local/mysql   #指定basedir,啟動時就不用指定basedir了
datadir=/usr/local/mysql/data   #/var/lib/mysql
socket=/usr/local/mysql/data/mysql.sock    #/var/lib/mysql/mysql.sock
port=3306
character_set_server=utf8
user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 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

#客戶端設置,即客戶端默認的連接參數
[client]
#默認連接端口                
port = 3306
#用於本地連接的socket套接字,這個不同於上面mysqld中的socket,如果這個不寫執行mysql -uroot -p會報錯
socket = /usr/local/mysql/data/mysql.sock
#編碼
default-character-set = utf8

[mysqld_safe]
log-error=/usr/local/mysql/logs/mysql.log    #log可以寫在mysql新建的文件夾中,記得給mysql.log賦權限
pid-file=/usr/local/mysql/data/mysql.pid #創建新建的data文件夾中,原始為/var/run/mariadb/mariadb.pid

其他配置:

SQL Error (1055) sql_mode=only_full_group_by問題

安裝命令

#初始化mysql,指定mysql的文件夾和data的文件夾,卸載mariadb后必須指定,basedir和basedata不指定默認用/etc/my.cnf文件里面的參數
./bin/mysqld --initialize --user=mysql  --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &  
./bin/mysql_ssl_rsa_setup   
#啟動mysql,卸載mariadb后必須指定,--user也可以寫在配置文件里,相當於./bin/mysqld_safe --defaults-file=/etc/my.cnf
./bin/mysqld_safe --user=mysql &    
#將文件復制到服務中,具體看下面的將mysql設為服務
cp support-files/mysql.server /etc/init.d/mysql.server  

啟動

有安裝mariadb的話/etc/my.cnf文件中配置好的參數,實例化和啟動可以不指定,沒有/etc/my.cnf的話一定要指定.

執行啟動語句后面加&是指在后台運行.

查看是否啟動成功 ps -ef|grep mysql

 

更改密碼

如果忘記臨時密碼把datadir目錄下的文件刪掉,重新初始化,一定要給logs/mysql.log寫權限,不然密碼寫不進去,搜索password即可查看臨時密碼。

./bin/mysqld --initialize --user=mysql  --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &

./bin/mysql -u root -p -h 127.0.0.1     #進入的mysql的root用戶,輸入密碼,即剛才的臨時密碼

set password for 'root'@'localhost' =password('123456');      #更改新密碼

 

通過修改mysql表,批量修改所有root用戶名的密碼(包括遠程賬號的root)

登錄mysql系統,
mysql -uroot -p
Enter password: 【輸入原來的密碼】
mysql>use mysql;
mysql> update user set password=passworD("123456") where user='root';
mysql> flush privileges;
mysql> exit;   

關閉 

沒有安裝為服務時,使用此方法關閉mysql。

/usr/local/mysql/bin/mysqladmin -u root -p shutdown   #輸入密碼后關閉成功

連接中的會顯示

 

Mysql設置為服務

[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld      #復制啟動腳本到資源目錄
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld   #增加mysqld服務控制腳本執行權限
[root@localhost mysql]# chkconfig --add mysqld    #將mysqld服務加入系統服務
[root@localhost mysql]# chkconfig --list mysqld    #檢查mysqld服務是否生效

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off

配置好后可以使用service命令控制mysql的啟動和停止,命令為:service mysqld startservice mysqld stop

如果出現command not found是因為沒有安裝在目錄/usr/local下面,更改配置文件vi /etc/init.d/mysqld指定安裝的mysql目錄及data目錄即可

設置遠程主機登錄

./bin/mysql -u root -p      #進入的mysql的root用戶,輸入密碼

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

配置全局環境變量

編輯/etc/profile文件

# vi /etc/profile

在profile文件底部添加如下兩行配置,保存后退出

PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH

設置環境變量立即生效

# source /etc/profile

查看3306端口是否已開放

#linux查看端口
curl ***.***.***.***:3306
#windows查看端口
telnet ***.***.***.*** 3306

firewall-cmd方式(CentOS7)

#添加
firewall-cmd --zone=public --add-port=3306/tcp --permanent    (--permanent永久生效,沒有此參數重啟后失效)

#重新載入
firewall-cmd --reload

#查看
firewall-cmd --zone=public --list-ports|grep 3306

iptables方式(CentOS6)

    # vi /etc/sysconfig/iptables 
    -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

    # service iptables restart

    Linux下開啟/關閉防火牆命令
    #1) 永久性生效,重啟后不會復原
    #開啟: chkconfig iptables on
    #關閉: chkconfig iptables off

    #2) 即時生效,重啟后復原
    #開啟: service iptables start
    #關閉: service iptables stop

問題

1.初始化mysql時報錯

解決方法:

查看mysql配置文件: vi /etc/my.cnf,如果卸載mariadb,則cd到初始化時指定的--datadir目錄

找到mysql的datadir,進入datadir: cd /var/lib/mysql,

刪除所有文件: rm -rf *。然后再初始化即可

2.通過用mariadb的/etc/my.cnf文件,啟動時報錯Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

打開/etc/my.cnf,查看是否是socket=/var/lib/mysql/mysql.sock,不是則改為它。並在終端輸入以下命令。

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

卸載mariadb無配置文件

Mysql5.6問題

配置好my.ini

初始化數據庫

執行初始化操作前一定要安裝模塊

yum -y install autoconf

初始化操作

./script/mysql_install_db --user=mysql --basedir=/usr/local/mysql5.6 --datadir=/usr/local/mysql5.6/data --pid-file=/usr/local/mysql5.6/data/mysql.pid

啟動

./support-files/mysql.server start

更改密碼

和mysql5.7不同的是5.6密碼為空,直接登錄。

update user set authentication_string=password('123456') where user='root';

問題

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql5.6/data/ecs-3-0924974.novalocal.pid).

先查詢my.ini配置的err-log配置錯誤日志,查詢相關問題。 

yum快捷安裝

安裝

yum install wget -y   #安裝wget命令

#下載安裝用的Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm    

#安裝mysql5.7的rmp
yum -y install mysql57-community-release-el7-10.noarch.rpm

#安裝MySQL服務器
yum -y install mysql-community-server

會花些時間,安裝完成后就會覆蓋掉之前的mariadb

安裝好后可以用ps -ef|grep mysql查看進程id,再用lsof -p PID查看mysql的所有相關文件.

安裝報錯

 卸載

yum -y remove mariadb-libs-1:5.5.35-3.el7.x86_64   ;yum刪除ariadb-libs包,如果刪除后依然卸載不到,用rpm卸載
rpm -e mariadb-libs-5.5.35-3.el7.x86_64    ;rpm刪除ariadb-libs包

啟動

systemctl start  mysqld.service    #啟動mysql服務
systemctl status mysqld.service    #查看mysql服務

啟動報錯

根據提示執行"systemctl status mysqld.service" 或"journalctl -xe"

可以看到[ERROR] --initialize specified but the data directory has files in it. Aborting.

查看/etc/my.cnf中配置的datadir的路徑為/var/lib/mysql,進去清空即可,如果清空后又自動生成文件,需要先systemctl stop mysqld.service關掉mysql服務再刪除,注意,這里的mysql后台服務是無法kill的。

清空后 再systemctl start mysqld.service啟動mysql。

修改密碼

#查看臨時密碼
grep "password" /var/log/mysqld.log

 

mysql -uroot -p    #進入數據庫

#關閉密碼規則和長度驗證,否則會出現
#ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
set global validate_password_policy=0;
set global validate_password_length=1;

#修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

設置遠程主機登錄

#mysql -uroot -p登錄后,設置遠程主機登錄,設置完成后quit推出mysql登錄
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

#重啟
systemctl restart mysqld.service

這時是不能通過遠程訪問的,要想遠程訪問,還要開放防火牆端口。

防火牆開放3306端口

#添加
firewall-cmd --zone=public --add-port=3306/tcp --permanent    (--permanent永久生效,沒有此參數重啟后失效)
#重新載入 firewall-cmd --reload #查看 firewall-cmd --zone=public --list-ports|grep 3306

卸載更新

因為安裝了Yum Repository,以后每次yum操作都會自動更新,需要把這個卸載掉

yum -y remove mysql57-community-release-el7-10.noarch

參考文章

參考文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM