<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 1.1. Mysql安裝教程 Mysql到現在已經有很多種安裝方式,選擇一種安裝即可,Mysql也朝向“默認大于配置”的方向發展,安裝越來越便利。 安裝前請閱讀一遍教程,安裝過程中請確保每一步進行成功,不要盲目下一步。如果出現問題,很難排查,建議重裝。 #### 1) 安裝 mysql安裝方式有如下幾種: 這里也收集了一些不錯的安裝教程: 1. MSI版本安裝 [MySQL8.0.11 MSI版 安裝圖解說明(opens new window)](https://blog.csdn.net/CSDN_Liang_1991/article/details/81035293) 2. ZIP版本安裝 [mysql-8.0.11-winx64.zip安裝教程詳解(opens new window)](https://blog.csdn.net/zbajie001/article/details/80407944)[官方指南(opens new window)](https://dev.mysql.com/doc/refman/en/windows-start-service.html) 3. brew安裝(mac) 若不考慮版本直接執行命令`brew install mysql`。 **重要:安裝后請詳細查看輸出信息,這里會告訴你怎么啟動mysql,以及一些其他說明!!!** ~~~ # 通常這些輸出信息會告訴你如何啟動mysql。 To have launchd start mysql now and restart at login: brew services start mysql # 設置為自動啟動 Or, if you don't want/need a background service you can just run: mysql.server start # 手動啟動一次 ~~~ 4. scoop安裝(win) 使用[scoop(opens new window)](https://jiayaoo3o.github.io/2019/01/30/Windows%E4%B8%8B%E7%9A%84%E8%BD%AF%E4%BB%B6%E7%AE%A1%E7%90%86%E7%A5%9E%E5%99%A8-scoop/)直接安裝mysql:`scoop install mysql`。 **重要:安裝后請詳細查看輸出信息,這里會告訴你怎么啟動mysql,以及一些包含初始化密碼等其他說明!!!** 啟動命令`net start mysql`,也可在服務界面點擊鼠標啟動。 進入后請修改初始化密碼。 5. docker安裝 ~~~ # 拉取 MySQL 鏡像 docker pull mysql:latest # 運行容器 docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql # 參數說明: #-p 3306:3306 :映射容器服務的 3306 端口到宿主機的 3306 端口,外部主機可以直接通過 宿主機ip:3306 訪問到 MySQL 的服務。 #MYSQL_ROOT_PASSWORD=123456:設置 MySQL 服務 root 用戶的密碼。 ~~~ ##### 配置文件說明: 關于my.ini或著my.etc配置文件,大部分教程都是直接丟給你,我們以下面這個一一說明。 如果你使用mysql8,則如果不需要修改什么,直接不用配置文件即可,“約定大于配置”。 如果你使用mysql5.7,建議修改字符集相關設置。 ~~~ [mysqld] # 設置3306端口 port=3306 # 設置mysql的安裝目錄 basedir=C:/Users/w/scoop/apps/mysql/current # 設置mysql數據庫的數據的存放目錄 datadir=C:/Users/w/scoop/persist/mysql/data # 允許最大連接數 max_connections=200 # 允許連接失敗的次數。這是為了防止有人從該主機試圖攻擊數據庫系統 max_connect_errors=10 # 服務端使用的字符集默認為UTF8 character-set-server=utf8 # 創建新表時將使用的默認存儲引擎 default-storage-engine=INNODB # 默認使用“mysql_native_password”插件認證 default_authentication_plugin=mysql_native_password [mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 [client] # 設置mysql客戶端連接服務端時默認使用的端口 port=3306 default-character-set=utf8 ~~~ 上面的配置文件并不是都需要設置!!! ##### 舉例: 我們以mysql zip 5.7版本舉例說明, 這下面是我使用的配置文件以及安裝命令。 ~~~ [mysqld] port = 33066 explicit_defaults_for_timestamp=true character-set-server=utf8 [client] default-character-set=utf8 ~~~ ~~~ # 安裝命令 mysqld --initialize --console # 安裝服務命令 mysqld --install mysql57 # 啟動服務命令 net start mysql57 # 停止服務命令 net stop mysql57 # 刪除服務命令 sc delete mysql57 ~~~ Mysql客戶端 客戶端也有很多種。有收費的,像大名鼎鼎的Navicat、Navicat for MySQL、SQLyog等。也有免費,像HeidiSQL、[MySQL Workbench(opens new window)](https://dev.mysql.com/downloads/workbench/)等。 收費的我也不想出錢,也不想在破解道路上斗智斗勇了。 所以選擇免費的可以了。 直接使用[MySQL Workbench(opens new window)](https://dev.mysql.com/downloads/workbench/),這屬于mysql官方出品,免費,功能強大,缺點英文界面。 #### 2) 注意事項 1. windows下需要VC++依賴,如果你沒有安裝,請下載安裝。 Windows下可能提示缺少VC++201X,需要去[微軟網站(opens new window)](https://visualstudio.microsoft.com/zh-hans/downloads)進行下載,在網頁下面,不要傻乎乎的把VS2019下下來了。 2. 密碼沒有顯示或者沒看到。 在安裝目錄data文件中的.err文件中可以找到初始密碼。對于scoop來說是scoop的persist\\MySQL路徑下。 #### 3) 使用說明 1. 連接的驅動地址為"com.mysql.cj.jdbc.Driver" Mysql和mysql-connector都為8.0以上的版本時, 連接驅動就 不要再用: com.mysql.jdbc.Driver 要引用: com.mysql.cj.jdbc.Driver 2. 建立連接時url的一些參數 jdbc:mysql://localhost:3306/,這個東西后面跟的是數據庫的名字,8.0.X以上的版本還需在數據庫名后面加上這些東西 ?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true ### 1.2. 亂碼之謎 一般由下面原因: 1)客戶機沒有正確地設置client字符集,導致原先的SQL語句被轉換成connection所指字符集,而這種轉換,是會丟失信息的,如果client是utf8格式,那么如果轉換成gb2312格式,這其中必定會丟失信息,反之則不會丟失。一定要保證connection的字符集大于client字符集才能保證轉換不丟失信息。 2)數據庫字體沒有設置正確,如果數據庫字體設置不正確,那么connection字符集轉換成database字符集照樣丟失編碼,原因跟上面一樣。 亂碼主要的原因就是編碼字符集不兼容,默認情況下,我們只需要統一使用UTF8就可以了。 #### [](https://wonderwhyy.gitee.io/wdocs/pages/fccc0e/#_1-%E8%83%8C%E6%99%AF%E7%9F%A5%E8%AF%86)1) 背景知識: 1. 字符集和校驗規則 字符集是一套符合和編碼,校驗規則(collation)是在字符集內用于比較字符的一套規則,即字符集的排序規則。MySQL可以使用對種字符集和檢驗規則來組織字符。 MySQL服務器可以支持多種字符集,在同一臺服務器,同一個數據庫,甚至同一個表的不同字段都可以指定使用不同的字符集。 每種字符集都可能有多種校對規則,并且都有一個默認的校對規則,并且每個校對規則只是針對某個字符集,和其他的字符集么有關系。 在MySQL中,字符集的概念和編碼方案被看做是同義詞,一個字符集是一個轉換表和一個編碼方案的組合。 Unicode(Universal Code)是一種在計算機上使用的字符編碼。Unicode 是為了解決傳統的字符編碼方案的局限而產生的,以滿足跨語言、跨平臺進行文本轉換、處理的要求。 Unicode存在不同的編碼方案,包括Utf-8,Utf-16和Utf-32。Utf表示Unicode Transformation Format。 2. 字符集選擇規則 (1)編譯MySQL 時,指定了一個默認的字符集; (2)安裝MySQL 時,可以在配置文件 (my.cnf) 中指定一個默認的的字符集,如果沒指定,這個值繼承自編譯時指定的; (3)啟動mysqld 時,可以在命令行參數中指定一個默認的的字符集,如果沒指定,這個值繼承自配置文件中的配置,此時character\_set\_server被設定為這個默認的字符集; (4)當創建一個新的數據庫時,除非明確指定,這個數據庫的字符集被缺省設定為character\_set\_server; (5)當選定了一個數據庫時,character\_set\_database被設定為這個數據庫默認的字符集; (6)在這個數據庫里創建一張表時,表默認的字符集被設定為character\_set\_database,也就是這個數據庫默認的字符集; (7)當在表內設置一欄時,除非明確指定,否則此欄缺省的字符集就是表默認的字符集; 3. MySQL數據庫中字符集轉換流程 1、MySQL Server收到請求時將請求數據從character\_set\_client轉換為character\_set\_connection; 2、進行內部操作前將請求數據從character\_set\_connection轉換為內部操作字符集,其確定方法如下: 使用每個數據字段的CHARACTER SET設定值; 若上述值不存在,則使用對應數據表的DEFAULT CHARACTER SET設定值(MySQL擴展,非SQL標準); 若上述值不存在,則使用對應數據庫的DEFAULT CHARACTER SET設定值; 若上述值不存在,則使用character\_set\_server設定值。 3、將操作結果從內部操作字符集轉換為character\_set\_results。 ![](https://gitee.com/wonderwhyy/PicBed/raw/master/uPic/mysql20210302145211.png) #### [](https://wonderwhyy.gitee.io/wdocs/pages/fccc0e/#_2-%E5%B7%A5%E5%85%B7)2) 工具: 1. 查看當前數據庫的字符集命令:`show variables like '%char%';`這個命令會查看數據庫元數據的編碼信息,如果你看到存在latin1,則需要修改配置。 ![](https://gitee.com/wonderwhyy/PicBed/raw/master/uPic/mysqlcharset.png) 變量名解釋: character\_set\_client:客戶端請求數據的字符集 character\_set\_connection:客戶機/服務器連接的字符集 character\_set\_database:默認數據庫的字符集這個變量建議由系統自己管理,不要人為定義。 character\_set\_filesystem:把os上文件名轉化成此字符集,即把 character\_set\_client轉換character\_set\_filesystem, 默認binary是不做任何轉換的 character\_set\_results:結果集,返回給客戶端的字符集 character\_set\_server:數據庫服務器的默認字符集 character\_set\_system:系統字符集,這個值總是utf8,不需要設置。這個字符集用于數據庫對象(如表和列)的名字,也用于存儲在目錄表中的函數的名字。 2. 查看當前數據庫的校對規則命令:`show variables like 'collation%';` ![](https://gitee.com/wonderwhyy/PicBed/raw/master/uPic/mysql-collaction.png) 變量名解釋: collation\_connection 當前連接的字符集。 collation\_database 當前日期的默認校對。每次用USE語句來“跳轉”到另一個數據庫的時候,這個變量的值就會改變。如果沒有當前數據庫,這個變量的值就是collation\_server變量的值。 collation\_server 服務器的默認校對。 排序方式的命名規則為:字符集名字\_語言\_后綴, 其中各個典型后綴的含義如下: 1)\_ci:不區分大小寫的排序方式 2)\_cs:區分大小寫的排序方式 3)\_bin:二進制排序方式,大小比較將根據字符編碼,不涉及人類語言,因此\_bin的排序方式不包含人類語言 #### [](https://wonderwhyy.gitee.io/wdocs/pages/fccc0e/#_3-%E6%9F%A5%E7%9C%8B%E6%95%B0%E6%8D%AE%E5%AD%97%E7%AC%A6%E9%9B%86)3) 查看數據字符集: 1. 確定數據database、table、column字符集是不是正確的: ~~~ SELECT character_set_name, collation_name FROM information_schema.columns WHERE table_schema = your_database_name AND table_name = your_table_name AND column_name = your_column_name; ~~~ 2. 確定數據庫存進去的數據是不是正確的: ~~~ SELECT HEX(column_name) FROM table_name; ~~~ 如果查出來3F,3F是字符'?'的16進制表示,這表明數據庫里儲存的是?。這種情況最常見的原因是在將特定字符從客戶端字符集轉換為目標字符集時出現了問題。 3. 確定往返是可能的。 ~~~ SELECT 'ペ' AS `ペ`; /* or SELECT _ucs2 0x30da; */ ~~~ 1 如果結果也不為ペ,則往返失敗。 4. 確保問題出在瀏覽器或其他應用程序上,而不是MySQL。 使用mysql自帶的命令行客戶端程序完成上述步驟。如果mysql正確顯示字符,但您的應用程序不能正確顯示,則可能是由于系統設置引起的。 使用SHOW VARIABLES LIKE 'char%';查看系統設置: ~~~ mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+----------------------------------------+ | 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/local/mysql/share/mysql/charsets/ | +--------------------------+----------------------------------------+ ~~~ character\_set\_client:我們要告訴服務器,我給你發送的數據是什么編碼? character\_set\_connection:告訴字符集轉換器,轉換成什么編碼? character\_set\_results:查詢的結果用什么編碼? 如果以上三者都為字符集N,可簡寫為set names 'N'; 1. 臨時設置:SET NAMES 'utf8' 2. 永久設置: ~~~ # 修改數據的配置文件my.cnf [mysqld] character-set-server=utf8 [client] default-character-set=utf8 ~~~ * * * #### 4)亂碼終極解決方案: 1)首先要明確你的客戶端時候何種編碼格式,這是最重要的,這里我們將代碼開發工具統一使用utf8 2)確保你的數據庫使用utf8格式,很簡單,所有編碼通吃。 3)一定要保證connection字符集大于等于client字符集,不然就會信息丟失,比如: latin1 < gb2312 < gbk < utf8,若設置set character\_set\_client = gb2312,那么至少connection的字符集要大于等于gb2312,否則就會丟失信息 4)以上三步做正確的話,那么所有中文都被正確地轉換成utf8格式存儲進了數據庫,為了適應不同的瀏覽器,不同的客戶端,你可以修改character\_set\_results來以不同的編碼顯示中文字體,由于utf8是大方向,因此web應用是我還是傾向于使用utf8格式顯示中文的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看