前言:通過一天半的折騰,終於把 mysql 5.7.25 版本安裝上了 Amazon Linux AMI release 2017.09 系統上,把能參考的博客幾乎都看了一遍,終於發現這些細節問題,然而翻了無數的文章,基本上都沒有提到這些,因此小生儘可能把這些細節寫下來,一方面是供初學者們參考,另外一方面也是對本身花這麼長時間的摸索的一個總結,若有不足之處歡迎各路高手指正。node
1、安裝前的檢查mysql
1. 檢查 linux 系統版本linux
[root@localhost ~]# cat /etc/system-releasesql
2. 檢查是否安裝了 mysql (mysql 有三種安裝方式:二進制包安裝、RPM包安裝、源碼裝)數據庫
3. 系統內存檢查vim
檢查一下 linux 系統的虛擬內存大小,若是內存不足 1G,啓動 mysql 的時候可能會產生下面這個錯誤提示: 後端
Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code.ruby
See "systemctl status mysqld.service" and "journalctl -xe" for details.[FAILED]bash
2、卸載MySQL數據庫(RPM安裝方式)網絡
1. 查看是否安裝了MySQL組件
[root@localhost ~]# rpm -qa | grep mysql
若存在 mysql 安裝文件,則會顯示 mysql安裝的版本信息
如:mysql-connector-odbc-5.2.5-6.el7.x86_64
2. 卸載前先關閉MySQL服務
[root@localhost ~]# service mysql status
[root@localhost ~]# service mysql stop
3. 卸載已安裝的MySQL,卸載mysql命令,以下:
[root@localhost ~]# rpm -e --nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64
4. 將/var/lib/mysql文件夾下的全部文件都刪除乾淨。
1
2
3
4
5
6
7
8
9
10
|
細節注意:
檢查一下系統是否存在 mariadb 數據庫,若是有,必定要卸載掉,不然可能與 mysql 產生衝突。
系統安裝模式的是最小安裝,因此沒有這個數據庫。
檢查是否安裝了 mariadb:[root@localhost ~]# rpm -qa | grep mariadb
若是有就使勁卸載乾淨:
systemctl stop mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64
rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
|
3、卸載MySQL數據庫(二進制/源碼安裝方式)
1. 檢查mysql服務並關閉服務進程
(1)登陸Linux後執行service mysqld status 或者service mysql status命令查看MySQL服務狀態,根據開機初始化目錄下mysql腳本的文件名而定,我這裏是mysqld
(2)若是正在運行則執行service mysqld stop或者service mysql stop命令中止MySQL服務,根據開機初始化目錄下mysql腳本的文件名而定,我這裏是mysqld
2. 查找mysql的安裝目錄並完全刪除
(1)執行 find / -name mysql 查找跟mysql相關的目錄
(2)執行 rm -rf ‘目錄'刪除查找出來的目錄
3. 刪除mysql配置文件
(1)執行 rm -rf /etc/my.cnf命令刪除/etc/my.cnf文件
(2)執行 rm -rf /etc/init.d/mysqld命令刪除/etc/init.d/下跟mysql有關的所有文件,通常包括mysql文件或mysqld文件,若是存在mysql文件則執行 rm -rf/etc/init.d/mysql命令
4. 刪除mysql用戶及用戶組
(1)執行id mysql命令查看MySQL用戶及用戶組
(2)執行userdel mysql命令刪除MySQL用戶及用戶組
到此mysql卸載完成!
4、從 mysql 官網下載並上傳 mysql安裝包
1. 下載 mysql 安裝包
2. 上傳安裝文件到 linux 系統
5、將MySQL安裝到/usr/local/mysql下
1. 解壓安裝包,並移動至/usr/local目錄下
解壓 mysql 的 gz 安裝包: [root@localhost ~]# tar -zvxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
/usr/local 目錄下建立文件夾存 mysql:[root@localhost ~]# mkdir /usr/local/msyql
將文件移動到 /usr/local 目錄下,並重命名文件夾:[root@localhost ~]# mv mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz/* /usr/lcoal/mysql
新建data目錄:[root@localhost ~]# mkdir /usr/local/mysql/data
2. 添加系統用戶
添加 mysql 組和 mysql 用戶:
添加 mysql 組:[root@localhost ~]# groupadd mysql
添加 mysql 用戶:[root@localhost ~]# useradd mysql -g mysql
將/usr/local/mysql的素有者及所屬組改成mysql:[root@localhost ~]# chown -R msyql.mysql /usr/local/mysql
擴展:
查看是否存在 mysql 組:[root@localhost ~]# more /etc/roup | grep mysql
查看 msyql 屬於哪一個組:[root@localhost ~]# groups mysql
查看當前活躍的用戶列表:[root@localhost ~]# w
3. 檢查是否安裝了 libaio
[root@localhost pub]# rpm -qa | grep libaio
若沒有則安裝
版本檢查:[root@localhost pub]# yum search libaio
安裝:[root@localhost pub]# yum -y install libaio
4. 安裝 mysql
進入安裝 mysql 軟件目錄:[root@localhost ~]# cd /usr/local/mysql/
5. 初始化 mysqld
[root@localhost mysql]# /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize
六、配置 mysql
1. 配置文件:
[root@localhost mysql]# vim /etc/my.cnf
[mysqld] datadir=/usr/local/mysql/data basedir=/usr/local/mysql socket=/tmp/mysql.sock user=mysql port=3306 character-set-server=utf8 # 取消密碼驗證 skip-grant-tables # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # skip-grant-tables [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
2. 設置開機啓動
a. 複製啓動腳本到資源目錄:[root@localhost mysql]# cp ./support-files/mysql.server /etc/init.d/mysql
b. 增長 mysqld 服務控制腳本執行權限:[root@localhost mysql]# chmod +x /etc/init.d/mysql
c. 將 mysqld 服務加入到系統服務:[root@localhost mysql]# chkconfig mysql on
d. 檢查mysqld服務是否已經生效:[root@localhost mysql]# chkconfig --list mysql
命令輸出相似下面的結果:
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
代表mysqld服務已經生效,在二、三、四、5運行級別隨系統啓動而自動啓動,之後可使用 service 命令控制 mysql 的啓動和中止。
查看啓動項:chkconfig --list | grep -i mysql
刪除啓動項:chkconfig --del mysql
e. 啓動 mysqld:[root@localhost mysql]# service mysql start
3. 設置密碼
登陸(因爲/etc/my.cnf中設置了取消密碼驗證,因此此處密碼任意)
[root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p
>>use mysql
>>update user set authentication_string=password('你的密碼') where user='root';
>>flush privileges;
>>exit;
4. 將/etc/my.cnf中的skip-grant-tables刪除,登陸再次設置密碼(不知道爲啥若是再也不次設置密碼就操做不了數據庫了)
5.設置遠程鏈接
/user/local/mysql/bin/mysql -uroot -p
>>user mysql
>> update user set host='%' where user = 'root';
>> flush privileges;
>> exit;/usr/local/mysql/bin/mysql -u root -p >>ALTER USER 'root'@'localhost' IDENTIFIED BY '修改後的密碼'; >>exit;
6.環境變量配置
將mysql的bin目錄加入PATH環境變量,編輯 /etc/bashrc文件:[root@localhost mysql]# vim /etc/bashrc
1
2
|
MYSQL_HOME=/usr/local/mysql/bin
export PATH=$PATH:${MYSQL_HOME}
|
執行命令使其生效:[root@localhost mysql]# source /etc/bashrc
用 export 命令查看PATH值:[root@localhost mysql]# echo $PATH
7、登陸 mysql
1. 測試登陸
登陸 mysql:[root@localhost mysql]# mysql -uroot -p(登陸密碼爲初始化的時候顯示的臨時密碼)
初次登陸須要設置密碼才能進行後續的數據庫操做:SET PASSWORD = PASSWORD('123456');(密碼設置爲了123456)
修改密碼爲 password:update user set authentication_string=PASSWORD('password') where User='root';
2. 防火牆端口的設置,便於遠程訪問
[root@localhost ~]$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost ~]$ firewall-cmd --reload
開啓防火牆mysql3306端口的外部訪問
CentOS升級到7以後,使用firewalld代替了原來的iptables。下面記錄如何使用firewalld開放Linux端口
--zone : 做用域,網絡區域定義了網絡鏈接的可信等級。
這是一個一對多的關係,這意味着一次鏈接能夠僅僅是一個區域的一部分,而一個區域能夠用於不少鏈接
--add-port : 添加端口與通訊協議,格式爲:端口/通信協議,協議是tcp 或 udp
--permanent : 永久生效,沒有此參數系統重啓後端口訪問失效
5.3 使用 SQLyog 遠程鏈接出現不容許鏈接問題:
首先使用 dos 窗口 ping 一下 linux,排除網絡連通問題,其次使用 SQLyog 鏈接測試一下。
解決方法:登陸 linux mysql 在用戶管理表新增用戶賬號
mysql> use msyql
mysql> create user 'user-name'@'ip-address' identified by 'password';(紅色標記爲須要修改的地方)
其餘方案:
受權root用戶能夠進行遠程鏈接,注意替換如下代碼中的「password」爲 root 用戶真正的密碼,
另外請注意若是你的root用戶設置的是弱口令,那麼很是不建議你這麼幹!:
1
2
|
mysql> grant all privileges
on
*.* to root
@"%"
identified
by
"password"
with grant option;
mysql> flush privileges;
|