首先說明:老版本數據庫沒有數據,因此無數據備份過程。若是你在升級數據庫過程裏,須要備份數據,請另外自行處理。php
一、下載最新版MySQL、解壓待用html
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz #下載
tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz #解壓
cp -r mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/mysql #複製到安裝目錄
二、添加用戶mysql
#添加用戶組
groupadd mysql
#添加用戶mysql 到用戶組mysql
useradd -g mysql mysql
三、建立數據文件存放目錄(沒有放在MySQL默認的目錄)linux
mkdir /datas mkdir /datas/mysql chown -R mysql.mysql /datas/mysql chmod 777 /datas/mysql
四、卸載老版本(這裏可能會遇到各類問題)sql
rpm -qa|grep -i mysql #查找已有的包,當時我有2個(php-mysql-5.4.16-42.el7.x86_6四、perl-DBD-MySQL-4.023-5.el7.x86_64)
rpm -ev php-mysql-5.4.16-42.el7.x86_64 #刪除其中一個,正常,而後另一個刪不掉,有依賴安裝包
yum -y remove perl-DBD-MySQL #這樣才終於卸載掉
具體這個步驟,參考這裏,感謝原做者:數據庫
http://www.cnblogs.com/kerrycode/p/4364465.html服務器
http://blog.csdn.net/tjcyjd/article/details/52189182socket
http://www.jb51.net/os/RedHat/80289.htmlide
五、安裝新的MySQL,當前用戶在 /var/local/mysql/ 目錄下:測試
./bin/mysqld --initialize --user=mysql --datadir=/datas/mysql #安裝
./support-files/mysql.server start #啓動服務
這裏有可能沒法啓動,問題:mysqld_safe error不能建立錯誤日誌文件
cd /var/log/mariadb/
vi mariadb.log #新建一個文件
chown mysql.mysql mariadb.log
chmod 777 mariadb.log
再啓動就ok了
參考,感謝原做者:http://tieba.baidu.com/p/5103002724
ps aux | grep mysql #查看一下進程
/usr/local/mysql/bin/mysql -V #查看版本,是否是正確的,或者登錄後用命名查看: SELECT VERSION();
六、安裝正常後,就是初始配置了。包括:修改root密碼、修改端口、容許用戶遠程登錄
不過安裝過程,要注意,有個初始密碼【(YngqRv7m).e】(每次每一個人都不一樣,先記着,一下子登錄的時候用):
2017-06-29T02:20:02.092807Z 1 [Note] A temporary password is generated for root@localhost: (YngqRv7m).e
端口:
vi /etc/my.cnf #編輯配置文件
修改以下:
[mysqld]
datadir=/datas/mysql
port=33316
[client]
port=33316
修改root用戶:
登錄mysql:
/usr/local/mysql/bin/mysql -uroot -p
若是報錯 Can’t connect to local MySQL server through socket
應該是「/etc/my.cnf」配置文件的問題了。解決辦法是修改「/etc/my.cnf」配置文件,在配置文件中添加「[client]」選項和「[mysql]」選項,並使用這兩個選項下的「socket」參數值,與「[mysqld]」選項下的「socket」參數值,指向的socket文件路徑徹底一致。以下,繼續修改my.cnf。參考,感謝做者: http://www.aiezu.com/db/mysql_cant_connect_through_socket.html
[mysqld] datadir=/datas/mysql socket=/var/lib/mysql/mysql.sock port=33316 [client] default-character-set=utf8 socket=/var/lib/mysql/mysql.sock port=33316 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid
而後登錄進去,修改root
/usr/local/mysql/bin/mysql -uroot -p #而後輸入上面記下的密碼 (YngqRv7m).e
操做可能會報錯:
mac mysql error You must reset your password using ALTER USER statement before executing this statement.
安裝完mysql 以後,登錄之後,無論運行任何命令,老是提示這個。那麼:
SET PASSWORD = PASSWORD('your new password');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
完成以上三步退出再登,使用新設置的密碼就好了。參考,感謝做者:http://www.cnblogs.com/debmzhang/p/5013540.html
而後是設置容許遠程登陸:
須要手動增長能夠遠程訪問數據庫的用戶。
方法1、本地登入mysql,更改 "mysql" 數據庫裏的 "user" 表裏的 "host" 項,將"localhost"改成"%"
mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>select host, user from user;
方法2、直接受權(推薦)
從任何主機上使用root用戶,密碼:youpassword(你的root密碼)鏈接到mysql服務器:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION; FLUSH PRIVILEGES
我用方法一不行,繼續方法二纔好。沒測試是否是方法執行了還須要重啓mysql,按道理應該不用。
參考,感謝做者:http://www.cnblogs.com/hyzhou/archive/2011/12/06/2278236.html
另外,添加用戶,或者修改其餘用戶的密碼,直接參考:http://blog.csdn.net/adu198888/article/details/54092857
#給用戶test賦予全部庫和表的部分權限(因此權限是: all privileges) grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
#修改用戶密碼 update mysql.user set authentication_string=password('密碼') where User='test' and Host='localhost'; flush privileges;
另外附:
有時候mysql報錯:Got a packet bigger than 'max_allowed_packet' bytes
而後命令查看和配置文件裏查看的max_allowed_packet結果不同(命令查詢是1024):
show VARIABLES like '%max_allowed_packet%'; #結果爲1024
那就考慮是由於服務器的內存過小,被MySQL重置爲1024了。
解決辦法是:一、重啓MySQL,就行了;二、根本解決辦法是服務器加內存。