卸載MariaDB
注意:一定要將mariaDB包和自帶mysql包卸載乾淨,否則安裝時出現各種奇妙錯誤,導致失敗。
rpm -qa | grep -i mariadb //查看有沒有安裝mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 //如果有,卸載MariaDB
卸載已有Mysql
//卸載舊版本的Mysql
rpm -qa | grep -i mysql //查看有沒有安裝mysql
rpm -e MySQL-client-5.6.38-1.el7.x86_64 //如果有,卸載舊版本Mysql
//刪除服務
chkconfig --list | grep -i mysql //查看服務
chkconfig --del mysql //刪除服務
//刪除mysql分散的文件夾
whereis mysql //查出相應的mysql文件夾,也可以用find / -name *mysql*
rm -rf /use/lib/mysql //刪除文件夾
如:
安裝依賴
注意:先裝好依賴,再裝mysql。即使順序出錯,裝完依賴一定要卸載mysql並重新裝mysql,否則mysql裝上了也會出現各種錯誤
yum install perl
yum -y install autoconf //此包安裝時會安裝Data:Dumper模塊
下載mysql
官網下載mysql,如下:
不同時間mysql可能預留的版本不一致,通常會預留比較穩定的好的版本
注意:centos內核基於Red Hat,所以下載的時候需要下載Red Hat版本
centos 7.2_64位的,如果不清楚自己系統的位數,可以通過file /bin/ls 查看
安裝
安裝Mysql
解壓mysql
tar -xvf MySQL-5.6.38-1.el7.x86_64.rpm-bundle.tar //注意,是-xvf不是-zxvf
安裝mysql
rpm -ivh MySQL-client-5.6.38-1.el7.x86_64.rpm //-i是安裝,-v是列出更多詳細信息,-h是在安裝時列出hash標記
rpm -ivh MySQL-devel-5.6.38-1.el7.x86_64.rpm
rpm -ivh MySQL-server-5.6.38-1.el7.x86_64.rpm
如果提示FATAL ERROR: please install the following Perl modules before executing,
先安裝perl
yum install -y perl-Module-Install.noarch
修改密碼
service mysql status //查看mysql服務狀態
//如果是開啓服務狀態,用service mysql status關閉服務
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & //繞過密碼登錄
mysql -u root -p //登錄
use mysql; //切換數據庫
select Host,User,Password from user; //查詢用戶
UPDATE user SET password=password("root") WHERE user='你設置的密碼'; //修改密碼
quit //退出
service mysql restart //重啓mysql服務
mysql -u root -proot // -proot,p代表password,root是密碼
use mysql ; //切換數據庫
set password = password('root'); //第一次登陸必須修改mysql密碼
flush privileges; //刷新權限
//賦予任何主機訪問數據的權限(遠程訪問)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges; //刷新權限
quit //退出 mysql
service mysql restart //重啓mysql
修改數據目錄
首先要先停止服務:service mysql stop,然後找到my.cnf,這個文件在centos6.x中的位置和centos7的默認位置不一樣,這個文件在/usr/my.cnf。當然你可以cp這個文件到/etc/my.cnf,mysql加載這個配置文件的時候先加載/etc/my.cnf,如果沒有再加載/usr/my.cnf。
其次更改這個文件,加入以下配置
datadir是你要更改的存儲數據的目錄,注意:這個目錄,要是mysql這個用戶的權限。因爲按照這種方式在centos7安裝mysql5.6,數據目錄默認在/var/lib/mysql
datadir = /APP/mysql
character_set_server=utf8
max_connections=200
collation_server=utf8_general_ci
lower_case_table_name=1
而這個目錄其實是mysql用戶組下mysql用戶的目錄。
因此我們要向遷移mysql存儲目錄,目錄應該也是這樣的權限。
最簡單的辦法就是使用cp -a 命令,加入了-a參數則會將權限也一併拷貝。
因此,執行如下命令: cp -a /var/lib/mysql /APP/ 這樣就會將/var/lib/mysql整個拷貝到/APP目錄下,並且無網上說的權限的問題。
後面我們需要簡單的修改一下mysql的配置
max_connections:mysql的最大連接數
character-set-server=utf8 : 將server的編碼設置爲utf-8,如果需要安裝client,則在[client]中需要配置character-set-client=utf8
collation-server=utf8_general_ci:設置索引編碼
lower_case_table_name=1:大小寫敏感,設置成1,大小寫不敏感。
default-character-set = utf8 :不應該設置爲[mysqld]下,否則會報Starting MySQL... ERROR! The server quit without updating PID file的錯。我這裏註釋掉了。
保存後,啓動服務:service mysql start
啓動報錯解決辦法:
如果啓動報錯Starting MySQL... ERROR! The server quit without updating PID file
可能有幾個原因:
- 可能進程裏已經存在mysql進程
- 可能是第二次在機器上安裝mysql,有殘餘數據影響了服務的啓動。
- selinux惹的禍,如果是centos系統,默認會開啓selinux
- 數據目錄權限問題
- 在[mysqld]下設置了default-character-set = utf8,需註釋掉
防火牆開放3306端口
//查看firewall狀態(runing:運行,not runing:沒有運行),如果沒有運行,用systemctl start firewalld啓動。如果不需要啓動防火牆,則忽略這一步。
firewall-cmd --state
firewall-cmd --permanent --zone=public --add-port=3306/tcp //添加3306端口
firewall-cmd --reload //重新加載firewall
設置開機自動啓動
chkconfig --list mysql //查看mysql服務
chkconfig mysqld on //開啓MySQL服務自動開啓命令
chkconfig mysql on //開啓MySQL服務自動開啓命令
mysql集合重要目錄
- /var/lib/mysql 數據庫文件
- /usr/share/mysql 命令及配置文件
- /usr/bin mysqladmin、mysqldump等命令
本地API測試成功,但是集羣使用出現連接超時或者密碼過時的錯誤
全部設置成N