1. 程式人生 > >Ubuntu 系統解除安裝並安裝MySQL和基本配置(修改密碼,遠端登入,設定編碼格式)全過程

Ubuntu 系統解除安裝並安裝MySQL和基本配置(修改密碼,遠端登入,設定編碼格式)全過程

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