1. 程式人生 > >騰訊雲系列三:Centos7 安裝 mysql資料庫 遠端連線 字符集設定

騰訊雲系列三:Centos7 安裝 mysql資料庫 遠端連線 字符集設定

關鍵字加紅:難看死了Oracle oracle Linux linux 資料庫 java Java mysql Mysql 測試 —— edit by 陳宇超

安裝環境:騰訊雲主機 centos7,1核1G記憶體,1M頻寬,系統盤linux50G

引言

CentOS 7 版本將MySQL資料庫軟體從預設的程式列表中移除,用mariadb代替了,所以 yum 安裝還得多走一步

第一步 : 手動下載yum源並安裝yum源

官網是資訊獲取的最重要渠道!從官網下載yum源,使用wget工具

將官網生成的下載連結粘到wget命令後

安裝倉庫

[[email protected]

_39_77_centos cyc]# rpm -ivh mysql57-community-release-el7-11.noarch.rpm

第二步 : 安裝mysql資料庫

安裝mysql資料庫(這會預設安裝最新版5.7,如果你不介意!筆者安裝的是5.6,5.7安裝包會大很多),至此資料庫就安裝完成了

[[email protected]_39_77_centos ~]# yum install mysql-community-server

以下部分屬於補充知識點 : 自定義安裝你想要的mysql資料庫版本

  在MySQL Yum儲存庫(http://repo.mysql.com/yum/

)中,MySQL社群伺服器的不同版本系列託管在不同的子倉庫中。預設情況下,最新的GA系列(目前為MySQL 5.7)的子倉庫已啟用(enabled),預設情況下禁用所有其他系列(例如,MySQL 5.6系列)的子倉庫(disabled)。

  使用 yum repolist all | grep mysql 可以檢視MySQL Yum儲存庫中的所有子倉庫

這裡寫圖片描述

  要安裝最新的GA系列的最新版本,不需要配置。要安裝最新的GA系列以外的特定系列的最新版本,請禁用當前最新GA系列子倉庫,並在執行安裝命令之前啟用特定系列的子倉庫。centos7 平臺支援 yum-config-manager命令,可以發出以下命令,該命令禁用5.7系列的子倉庫,並啟用5.6系列的子倉庫

[[email protected]_39_77_centos ~]# yum-config-manager –disable mysql57-community
[[email protected]_39_77_centos ~]# yum-config-manager –enable mysql56-community

  在任何時間只能啟用一個版本系列的子連結。當啟用了多個版本系列的子倉庫時,Yum將使用最新的系列。檢視已經啟用的子倉庫可以使用以下命令

[[email protected]_39_77_centos ~]# yum repolist enabled | grep mysql

第三步 : 啟動 mysql 服務

剛剛完成mysql的安裝,mysql預設是沒有啟動的,可使用以下命令檢視

[[email protected]_39_77_centos ~]# systemctl status mysqld.service
● mysqld.service - MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead)

啟動mysql,速度有可能會有一些慢,請要耐心等待。

[[email protected]_39_77_centos ~]# systemctl start mysqld.service

  注意: mysql在安裝完成之後,預設情況下,MySQL將繫結到localhost(127.0.0.1)。允許在公共IP上不受限制地訪問MySQL是不推薦的,一般來說我們會去修改/etc/my.cnf配置檔案中的bind-address引數來更改其監聽的地址。如果您決定將MySQL繫結到您的公共IP,您應該實現只允許來自特定IP地址的連線的防火牆規則。至於如何遠端連線,後面會講到。

第四步 : 增強 mysql 。注意這一步只有mysql 5.6需要,mysql 5.7在yum安裝時已經預設安裝該安全增強。

程式mysql_secure_installation 允許您執行重要操作,如設定root密碼,刪除匿名使用者等。始終執行它以確保您的MySQL 5.6安裝:

[[email protected]_39_77_centos ~]# mysql_secure_installation

對於以下選項,都建議回答yes

第五步 :在伺服器使用 mysql

[[email protected]_39_77_centos ~]# mysql
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
[[email protected]_39_77_centos ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.6.37 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>

第六步 : 遠端連線 mysql

在這之前有必要了解以下mysql的賬戶登入許可權相關的知識

1.mysql伺服器中使用者的資訊儲存在資料庫名為mysql的資料庫中的user表中,輸入以下命令檢視使用者的登入許可權,通過上面的設定我們可以看到root管理員賬號只被允許從本機登入

mysql> SELECT DISTINCT CONCAT(‘User: ”’,user,”’@”’,host,”’;’) AS query FROM mysql.user;
+—————————+
| query |
+—————————+
| User: ‘root’@’127.0.0.1’; |
| User: ‘root’@’::1’; |
| User: ‘root’@’localhost’; |
+—————————+
3 rows in set (0.00 sec)

2.建立遠端連線使用者 chenyuchao 密碼 cool 讓它可以從任何主機上訪問資料庫 dbchen ,並且擁有該資料庫的所有操作許可權

[[email protected]_39_77_centos ~]# mysql -uroot -p //顯然只有管理員才有資格建立使用者,所以我們用root賬號在伺服器上登入mysql
Enter password:
mysql> create database dbchen;
. . .
mysql> create user ‘chenyuchao’@’%’ identified by ‘cool’;
. . .
mysql> grant all on dbchen.* to ‘chenyuchao’ identified by ‘cool’;

作如下簡要說明:
create user ‘xxx’ @ ’%’ identified by ‘xxx’;   xxx分別表示使用者名稱和密碼,這裡的 % 百分號表示任意IP主機
create user ‘xxx’ @ ’139.199.201.55’ identified by ‘xxx’;   %百分號可以用具體的IP地址代替,那麼該使用者就只能從該指定的ip主機上連線mysql伺服器
create user ‘xxx’ @ ’localhost’ identified by ‘xxx’;   標記為localhost那麼就只能從伺服器上訪問mysql資料庫,禁止遠端連線


grant all 表示授予所有許可權,但是不建議授予所有許可權。對於普通使用者,建議使用GRANT SELECT,INSERT,UPDATE,DELETE。
on dbchen.* 表示授予的範圍為dbchen資料庫的所有表。當然你也可以指定某個特定的表,例如僅指定student表 on dbchen.student

mysql> flush privileges;    //重新整理一下是有必要的

對於使用者的增刪改以及許可權控制,實際上都是操作mysql.user這張表,按正常的來就可以了

3.使用DataGrip IDE去遠端訪問mysql資料庫,測試成功

這裡寫圖片描述

第六步 :修改資料庫的編碼

資料庫的預設編碼並不是utf8,這會導致向表中插入中文時會出現下面的錯誤提示
這裡寫圖片描述

使用 show variables like ‘char%’;命令檢視一下資料庫編碼

這裡寫圖片描述

修改 /etc/my.cnf配置檔案,不過在修改之前最好備份一下該配置檔案

小提示 :一旦你的 my.cnf 配置檔案配置出錯,當你執行 systemctl start mysqld.service 命令時,就會出現一直等待,然後你就會ctrl+c強制結束程序,然後你就會執行systemctl status mysqld.service 看看服務啟動了沒,完事了你還發現服務已經處於啟用狀態,當mysql -uroot -p 登入時就會丟擲錯誤ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2),這都是因為配置檔案有錯誤,所以備份很重要!

向配置檔案中[mysqld]欄目下新增如下內容即可,這個字元設定應用於伺服器範圍,並應用於任何應用程式建立的資料庫的預設值,以及在這些資料庫中建立的表。

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

這一塊可能比較容易出問題導致伺服器不能正常啟動,出錯很可能是中心橫線被寫成下劃線,有點坑啊,所以截個圖看看

這裡寫圖片描述

配置完重新啟動伺服器

[[email protected]_39_77_centos ~]# systemctl restart mysqld.service

再次驗證一下,都變成utf-8了,我很滿意!哈哈哈哈

這裡寫圖片描述

順便小提一下如何檢視資料庫和表的編碼

show create database 資料庫名;

這裡寫圖片描述

dbchen這個資料庫是我在修改全域性資料庫編碼為utf8之前建立的,所以目前為止它的編碼還是latin1

show create table 表名;

這裡寫圖片描述

stu這張表的編碼自然也是latin1

既然走到這一步,把這個資料庫的編碼也改過來吧

改變資料庫的編碼為utf-8;mysql> alter database dbchen character set utf8;

改變表的編碼為utf-8;mysql> alter table dbchen.stu character set utf8;

接下來在dbchen資料庫中新建的表也會是utf-8的編碼了,還有就是雖然表stu編碼格式改成了utf8,但是該表裡面原先的欄位的編碼仍是latin1,插入中文還是會出錯。

附加 : 修改mysql的root使用者密碼

見參見【1】的連結,裡面有講到