接了個任務,在公司的服務器上安裝mysql,並允許遠程登錄。在這裏做一下記錄,以便後續使用。
首先查看當前機器上是否有安裝mysql,在命令行中輸入:mysql --version,如果有顯示
則代表當前安裝的是 mysql5.6.44 的版本。
注意,如果是8.0以後的版本,遠程權限設置略有不同
一、卸載
1、卸載掉安裝的部分
首先執行查看命令,看一下已經安裝的:
[root@localhost ~]# rpm -qa |grep -i mysql
2、執行卸載命令
[root@localhost ~]# yum remove mysql-community mysql-community-server mysql-community-libs mysql-community-common mysql-community-client mysql-community-release
再進行一遍檢查:rpm -qa |grep -i mysql,確定安裝部分已完全卸載掉。
3、清理剩餘文件
3.1 查看mysql文件目錄:
[root@localhost ~]# find / -name mysql
將這些文件全部刪除。
3.2 刪除掉安裝日誌文件:
[root@localhost ~]# rm -f /var/log/mysqld.log
否則下次你會找不到安裝密碼的。
3.3 刪除歷史記錄:
[root@localhost ~]# rm -rf /var/lib/mysql
這一條極其重要,如果你安裝後發現在/var/log/mysqld.log沒有密碼的話,就執行這一句吧!然後重啓mysql(systemctl restart mysqld)
二、安裝
由於最新版本的linux系統開始,默認的是Mariadb,而不是mysql,所以需要先去mysql的官方庫裏下載mysql的repo源,然後再執行安裝操作。
1、下載mysql的repo源,並安裝
下載mysql的repo源
[root@localhost ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
再執行安裝命令
[root@localhost ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
2、安裝mysql
[root@localhost ~]# yum install mysql-server
根據步驟安裝就可以了,不過安裝完成後,沒有密碼,需要重置密碼。安裝後再次查看mysql
3、登錄
[root@localhost ~]# mysql -u root
首次登錄時會報出錯誤,原因是/var/lib/mysql的訪問權限問題。下面的命令把/var/lib/mysql的擁有者改爲root用戶:
[root@localhost ~]# chown root /var/lib/mysql
再次執行登錄數據庫命令:mysql -u root 即可登入數據庫。
小技巧:
MySQL5.7加強了root用戶的安全性,因此在第一次安裝後會初始化一個隨機密碼,以下爲查看初始隨機密碼的方式
命令: grep ‘temporary password’ /var/log/mysqld.log
如果這一步不行的話,可參考 https://www.cnblogs.com/kynewu/p/8995749.html ,使用skip-grant-tables 修改密碼
4、修改安裝時的默認隨機密碼
在第3步登入數據庫的前提下
mysql> use mysql;
mysql> update user set password=password('yourpassword') where user='root' and host='localhost';
mysql> flush privileges;
即可將密碼修改爲yourpassword
也可以使用mysqladmin
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
例子:mysqladmin -uroot -p123456 password 123
5、設置mysql允許遠程連接
基於安全考慮root賬戶一般只能本地訪問,沒有遠程訪問的權限的,因此當程序跟數據庫不在同一臺服務器上時,我們需要開啓mysql的遠程訪問權限。下面是 5.0版本的 基本的步驟 如果是8.0版本的請看5.3:
5.1、登錄到mysql中,爲root進行遠程訪問的授權,執行下面的命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
如果是需要授權給某個ip,則只需要將命令中的%換成對應的ip地址即可,如:
GRANT ALL PRIVILEGES ON . TO root@“172.168.2.135” IDENTIFIED BY “root”;
最後的 “root” 代表你給這些地址分配的遠程登錄密碼。
5.2、重新加載權限
因爲MySQL把權限都放在了cache中,所以在做完更改後需要重新加載。
mysql> flush privileges;
5.3 mysql 8.0版本以後的
CREATE USER 'root'@'%' IDENTIFIED BY 'yourpassword'; -- 創建用戶
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION; -- 授權
flush privileges; -- 刷新權限
創建一個root用戶,密碼是yourpassword
以上。