先給出卸載的方法,方便童鞋安裝失敗的時候可以徹底刪除mysql
徹底刪除mysql完整步驟:
1、 sudo apt-get remove mysql-server.
2、sudo apt-get autoremove mysql-server
3、sudo apt-get remove mysql-common
4、sudo rm /var/lib/mysql/ -R # 刪除數據庫目錄
sudo rm /etc/mysql/ -R #刪除啟動腳本、配置文件等
sudo apt-get autoremove mysql* --purge # 卸載mysql所有文件
sudo apt-get remove apparmor # 這個apparmor是在裝mysql-server時裝上的,和安全有關
檢查是否卸載干凈
dpkg -l | grep mysql # 若沒有返回,說明已完成卸載
如果有返回 則執行下面的命名
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P # 清理殘余mysql文件
接下來就開始安裝前的准備
去官網下載mysql最新版是5.7.22,下面是傳送門
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
下載之后移動到想要放置的位置解壓,我這里是移動到了/mnt/mysql5.7/下面
然后用tar -xf mysql-server_5.7.22-1ubuntu14.04_amd64.deb-bundle.tar解壓:
安裝前准備工作:更新依賴源及安裝libaio1依賴
sudo apt-get update
sudo apt-get upgrade
apt-get install libaio1
開始安裝:
安裝順序如下:
1.mysql-common_5.7.22-1ubuntu14.04_amd64.deb
2.libmysqlclient20_5.7.22-1ubuntu14.04_amd64.deb
3.libmysqlclient-dev_5.7.22-1ubuntu14.04_amd64.deb
4.libmysqld-dev_5.7.22-1ubuntu14.04_amd64.deb
5.mysql-community-client_5.7.22-1ubuntu14.04_amd64.deb
6.mysql-client_5.7.22-1ubuntu14.04_amd64.deb
7.mysql-community-server_5.7.22-1ubuntu14.04_amd64.deb
一、安裝命令
dpkg -i mysql-common_5.7.22-1ubuntu14.04_amd64.deb libmysqlclient20_5.7.22-1ubuntu14.04_amd64.deb libmysqlclient-dev_5.7.22-1ubuntu14.04_amd64.deb libmysqld-dev_5.7.22-1ubuntu14.04_amd64.deb mysql-community-client_5.7.22-1ubuntu14.04_amd64.deb mysql-client_5.7.22-1ubuntu14.04_amd64.deb mysql-community-server_5.7.22-1ubuntu14.04_amd64.deb
二 輸入root密碼,OK(忘記截圖了)
三、查看是否安裝成功,命令
service mysql start
四、進入mysql,命令
mysql -u root –p
到這里mysql是安裝成功了
Mysql5.7.22的配置文件放的與其他版本有一些不同,在終端輸入vi /etc/mysql/my.cnf,發現該文件引用了其他的倆個文件,下面的配置寫在這個文件里面也可以生效,不過我還是分別配置在了對應的文件中,畢竟目錄這么放也是有它的原因滴
但是默認的數據庫文件是在/var/lib/mysql/下面,如果以后數據庫數據量增大,就會報磁盤不足的問題,那接下來就開始修改數據庫文件存放的默認路徑:
service mysql stop #遷移前必須停止mysql
創建mysql 存放的目標文件夾 mkdir /mnt/mysql/data
修改所屬用戶和用戶組 chown -R mysql:mysql /mnt/mysql/data
修改權限 sudo chmod -R 700 /mnt/mysql/data
遷移文件 cp -a /var/lib/mysql/* /mnt/mysql/data/
修改配置文件 vi /etc/mysql/mysql.conf.d/mysqld.cnf
以上mysql 配置完畢,在ubuntu還有些敏感操作受到了 apparmor.d 的限制,mysql也受到了限制,vi /etc/apparmor.d/usr.sbin.mysqld 將/var/lib/mysql 修改為/mnt/mysql/data
重新加載apparmor 和 啟動mysql
service apparmor reload #不需要重啟
service mysql start
如果沒問題,這個時候已經修改成功了!
但是我在重新啟動apparmor時報下列錯誤:
Job for apparmor.service failed because the control process exited with error code. See "systemctl status apparmor.service" and "journalctl -xe" for details.
輸入systemctl status apparmor.service命令
可以看到是can’t open /lib/apparmor/function,意思就是說apparmor這個服務有問題,上網查了很久,也沒有找到有效的辦法,最后還是翻牆找到了解決辦法,下面給出傳送門
https://answers.launchpad.net/ubuntu/+source/apparmor/+question/296095
這邊文章說的是要重新安裝apparmor
下面是安裝命令
uname -a
lsb_release -crid
dpkg -l | grep apparmor
sudo apt-get install --reinstall apparmor
可以看到 service apparmor reload 成功
開啟遠程訪問
一 開放mysql
mysql的配置文件在/etc/mysql/mysql.conf.d/mysqld.cnf文件內,里面有一行bind-address = 127.0.0.1表示只允許本地訪問,將這行注釋即可
# bind-address = 127.0.0.1
二 創建新的mysql用戶
(1)首先在本地進入mysql數據庫的mysql庫內
use mysql;
(2)查看當前用戶的情況
Select Host, User from mysql.user;
一共有3個mysql賬號,Host列可以看出來,這些賬號都只支持服務器本機連接,現在我們來創建一個遠程用戶;
create user 用戶名 identified by '密碼';
創建完成了,在程序里面連接發現還是沒有權限,剛才我們只是創建了用戶,還沒有對這個用戶分配權限;all代表接受所有操作,比如 select,insert,delete....; *.* 代表所有庫下面的所有表;% 代表這個用戶允許從任何地方登錄;為了安全期間,這個%可以替換為你允許的ip地址;然后刷新mysql用戶權限相關表;
退出mysql, 重啟數據庫
設置utf8編碼格式
輸入mysql -u root -p 命令,進入MySQL
輸入 SHOW VARIABLES LIKE 'char%'; 查看MySQL編碼,有兩個不是utf8
方法一:
a.在終端中輸入 vi /etc/mysql/mysql.conf.d/mysqld.cnf 命令
打開mysqld.cnf 文件,添加 character-set-server=utf8
b.在終端輸入 vi /etc/mysql/conf.d/mysql.cnf 命令打開mysql.cnf配置文件,如圖添加代碼:default-character-set=utf8
方法二:在終端中輸入 vi /etc/mysql/mysql.conf.d/mysqld.cnf 命令
打開mysqld.cnf 文件,添加
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
重啟服務
輸入 SHOW VARIABLES LIKE 'char%'; 命令 ,顯示修改成功
到此,mysql安裝成功,編碼也改為utf-8,並且開啟了遠程訪問