Ubuntu 系統解除安裝並安裝MySQL和基本配置(修改密碼,遠端登入,設定編碼格式)全過程
阿新 • • 發佈:2018-12-31
1. 解除安裝mysql
sudo apt-get autoremove --purge mysql-server-5.7 # 根據你的mysql版本
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common
sudo rm -rf /etc/mysql/ /var/lib/mysql #很重要
#清理殘留資料
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
sudo apt autoremove
sudo apt autoclean
2. 安裝mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
3. 啟動mysql服務
1 sudo service mysql start #第一個不行的話試試第二個
2 sudo /etc/init.d/mysql start
4. 檢視密碼登入mysql
安裝MySQL的過程中沒有輸入密碼的過程,這裡需要開啟(/etc/mysql/debian.cnf) 檔案進行檢視
sudo cat /etc/mysql/debian.cnf
# 檢視到的檔案形式如下:user 是登入的使用者名稱 ,password是預設密碼(每個人的應該不同)
host = localhost
user = debian-sys-maint
password = IOsDzzRcVSjIP3wH
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = IOsLzzRcVSjIP3wK
socket = /var/run/mysqld/mysqld.sock
5.登入mysql
用上一步檢視到的使用者名稱和密碼登入
mysql -u user -p
#輸入密碼
6. 修改root的密碼
6.1 設定root 的 plugin欄位為mysql_native_password
在MySQL 5.7 中 password欄位已從mysql.user表中刪除,新的欄位名是“authenticalion_string”。先檢查一下root 的 plugin欄位是否為mysql_native_password。
use mysql;
select user, plugin from user;
#顯示如下結果
+------------------+-----------------------+
| user | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.session | mysql_native_password |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
#update一下root對應的plugin
update user set plugin='mysql_native_password' where user='root';
6.2 修改root密碼
update user set authentication_string=password('newPassword') where user='root';
flush privileges; #重新整理mysql許可權
退出命令列用root使用者登入輸入剛剛設定好的密碼即可。
7. 設定資料庫允許遠端訪問
這裡以root使用者為例子,其他使用者的設定類似只要修改使用者名稱和密碼即可。
7.1 開放3306埠
#使用ubuntu的防火牆工具ufw,沒有的話可以使用apt-get install ufw 安裝
sudo ufw allow 3306
# 檢視埠狀態
netstat -an | grep 3306
#顯示如下則開放埠成功
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
7.2 修改配置檔案的埠繫結
開啟的目錄可能會根據MySQL的版本稍有不同,可以先嚐試開啟 /etc/mysql/my.cnf 這個配置檔案,若該檔案不存在或檔案內容為空,則嘗試 /etc/mysql/mysql.conf.d/mysqld.cnf 。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 在bind-address = 127.0.0.1前面加上註釋,如下所示
# bind-address = 127.0.0.1
7.3 修改訪問許可權
#輸入密碼,登入mysql
mysql -u root -p
# 設定root使用者可以遠端登入
grant all privileges on *.* to [email protected]"%" identified by "pwd" with grant option;
#重新整理許可權
flush privileges;
#退出
exit;
#重新啟動mysql服務
/etc/init.d/mysql restart
#輸入密碼,登入mysql
mysql -u root -p
#檢視使用者對應的host欄位
use mysql;
select user,password,host from user;
#如下所示
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| debian-sys-maint | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
#可見root使用者允許遠端登入,設定到此完畢。
8. 修改mysql的編碼格式
在用java程式向mysql資料庫插入中文時,時常報錯顯示編碼格式不正確,這裡我們設定資料庫的預設編碼為UTF-8。
8.1 檢視MySQL編碼
show variables like '%character%';
# 顯示如下
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8.2 修改mysql的配置檔案
開啟MySQL配置檔案 (/etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf)
sudo gedit /etc/mysql/my.cnf
#在[client]下追加如下 (沒有[client]的話自己加上)
default-character-set=utf8
#在[mysqld]下追加如下 (沒有[mysqld]的話自己加上)
character-set-server=utf8
#在[mysql]下追加如下 (沒有[mysql]的話自己加上)
default-character-set=utf8
# 儲存並退出
重新啟動MySQL服務
servicemysql restart
或
/etc/init.d/mysqlrestart
登入mysql再次檢視MySQL編碼
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
#可見編碼修改成功,每次建立資料庫都預設為UTF-8。
注意 : 在修改編碼之前建立的資料庫編碼格式並不會改變,需要手動更改
參考連結
https://blog.csdn.net/crave_shy/article/details/23345869
https://www.cnblogs.com/MC-Curry/p/9519793.html