【配置環境】Linux下安裝MySQL

目錄

一,環境

二,安裝步驟

1.使用包管理器安裝MySQL

2.配置MySQL的安全選項

3.設置root用戶使用密碼進行身份驗證(可選)

三,拓展知識

1.如何修改MySQL的密碼策略?

2.實現連接MySQL數據庫的測試代碼


  • VMware? Workstation 16 Pro (版本:16.1.2 build-17966106)
  • ubuntu-22.04.2-desktop-amd64

1.使用包管理器安裝MySQL

  • 對于Ubuntu/Debian系統,使用apt-get命令安裝:
    • sudo apt-get update
    • sudo apt-get install mysql-server
  • 對于CentOS/RHEL系統,使用yum命令安裝:
    • sudo yum update
    • sudo yum install mysql-server
  • 安裝完成后,MySQL服務會自動啟動。使用以下命令檢查MySQL服務的狀態:
    • sudo systemctl status mysql
  • 如果MySQL服務沒有自動啟動,可以手動啟動MySQL服務:
    • 對于Ubuntu/Debian系統,使用以下命令:
      • sudo service mysql start
    • 對于CentOS/RHEL系統,使用以下命令:
      • sudo systemctl start mysql
  • 可以通過以下命令來檢查MySQL服務是否在運行:
    • sudo systemctl is-active mysql
  • 停止MySQL服務命令如下:
    • sudo systemctl stop mysql

2.配置MySQL的安全選項

  • 對于MySQL 5.7版本及以上,運行以下命令進行初始配置:(這個命令會要求你設置MySQL的root用戶密碼和其他安全選項)
    • sudo mysql_secure_installation
  • 然后提示是否對密碼驗證組件進行配置,輸入y
  • 接下來會顯示選擇設置密碼的強度,輸入0
  • 詢問是否要移除匿名用戶,輸入y(上一步選擇密碼強度后會有一個輸入要設置的密碼過程,但是直接跳過了,原因看下一節
  • 詢問是否禁用root用戶進行遠程登錄,輸入y
  • 詢問是否刪除測試數據庫并訪問它,輸入y
  • 詢問是否重新加載權限表,就是讓到目前為止作出的設置將立即生效。輸入y
  • 最后出現 All done,說明設置完成!
  • 安裝完成后,可以通過以下命令登錄MySQL服務器(此時是通過auth_socket插件進行身份驗證的)
    • sudo mysql

3.設置root用戶使用密碼進行身份驗證(可選)

  • 在配置MySQL的安全選項時,選擇設置密碼的強度后直接跳過了輸入密碼的一步,并顯示如下紅框中的內容
  • 這是因為在MySQL中,默認情況下,root用戶使用的是auth_socket插件進行身份驗證,而不是使用密碼。auth_socket插件通過Unix套接字文件來驗證用戶的憑據。因此,如果使用auth_socket插件進行身份驗證,就沒有必要為root用戶設置密碼。

如果希望為root用戶使用密碼進行身份驗證,可以按照以下步驟操作:

  • 以root用戶身份登錄MySQL(此時是通過auth_socket插件進行身份驗證):
    • sudo mysql
  • 登錄后,切換到MySQL系統數據庫:
    • USE mysql;
  • 將root用戶的身份驗證方法更新為使用mysql_native_password插件:(將your_password替換為root用戶的密碼,密碼長度至少為8個字符)
    • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
  • 刷新權限表使更改生效:
    • FLUSH PRIVILEGES;
  • 完成這些步驟后,root用戶將可以通過密碼進行身份驗證,而不是通過auth_socket插件。
  • 最后通過以下命令并輸入前面設置的MySQL的root用戶密碼,即可登錄MySQL服務器:
    • mysql -u root -p

1.如何修改MySQL的密碼策略?

  • 在設置MySQL的登錄密碼時,會遇到如下錯誤提示
  • 出現這個錯誤是因為MySQL默認啟用了密碼策略來確保密碼的安全性。根據密碼策略,密碼必須滿足一定的要求才能被接受,要求如下紅框中內容。
  • 但在MySQL中,可以通過修改密碼策略變量來調整密碼策略的要求。具體來說,可以修改以下兩個相關的變量:
    • validate_password.policy:該變量定義了密碼策略的要求。其取值可以是一個或多個如下策略的組合。
      • LOW:密碼只要求長度滿足即可。
      • MEDIUM:密碼至少要求包含數字、字母和特殊字符。
      • STRONG:密碼至少要求包含數字、字母、特殊字符和其它字符。
    • validate_password.length:該變量定義了密碼的最小長度要求,默認為8,可以根據需要進行調整。

可以按照以下步驟在MySQL中調整密碼策略:

  • 以root身份登錄MySQL:
    • sudo mysql
  • 執行以下命令修改密碼策略:(將密碼策略設置為LOW,密碼最小長度設置為4)
    • SET GLOBAL validate_password.policy='LOW';
    • SET GLOBAL validate_password.length=4;
  • 刷新權限表使更改生效:
    • FLUSH PRIVILEGES;
  • 退出MySQL的命令行界面:
    • QUIT;

2.實現連接MySQL數據庫的測試代碼

#include <mysql/mysql.h>
#include <stdio.h>int main() {MYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;char *server = "localhost";char *user = "username";char *password = "password";char *database = "database_name";conn = mysql_init(NULL);// 連接數據庫if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {fprintf(stderr, "%s\n", mysql_error(conn));mysql_close(conn);return 1;}// 執行SQL查詢if (mysql_query(conn, "SELECT * FROM table_name")) {fprintf(stderr, "%s\n", mysql_error(conn));return 1;}res = mysql_use_result(conn);// 處理查詢結果while ((row = mysql_fetch_row(res)) != NULL) {for(int i = 0; i < mysql_num_fields(res); i++) {printf("%s ", row[i] ? row[i] : "NULL");}printf("\n");}// 釋放結果集和關閉連接mysql_free_result(res);mysql_close(conn);return 0;
}
  • 確保已經安裝了?libmysqlclient-dev?庫。如果尚未安裝,可以使用以下命令安裝:
    • sudo apt-get install libmysqlclient-dev
  • 在編譯命令中,需要鏈接MySQL C API庫。可以使用以下命令進行編譯:
    • gcc -o my_program main.c -lmysqlclient
  • 如果仍然遇到問題,請確保編譯器能夠正確找到MySQL庫文件的路徑。如果MySQL庫文件不在默認路徑中,可能需要使用?-L?標志來指定庫文件的路徑。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40052.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40052.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40052.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TiDB基礎介紹、應用場景及架構

1. 什么是newsql NewSQL 是對各種新的可擴展/高性能數據庫的簡稱&#xff0c;這類數據庫不僅具有NoSQL對海量數據的存儲管理能力&#xff0c;還保持了傳統數據庫支持ACID和SQL等特性。 NewSQL是指這樣一類新式的關系型數據庫管理系統&#xff0c;針對OLTP&#xff08;讀-寫&…

經驗分享:企業數據倉庫建設方案總結!

導讀 在企業的數字化轉型浪潮中&#xff0c;數據被譽為“新時代的石油”&#xff0c;而數據倉庫作為數據管理與分析的核心基礎設施&#xff0c;在企業的信息化建設中扮演著重要的角色。本文將深入探討企業數據倉庫建設過程中所遇到的問題以及解決經驗&#xff0c;為正在籌備或…

進程/線程上下文切換會用掉你多少CPU?

進程是操作系統的偉大發明之一&#xff0c;對應用程序屏蔽了CPU調度、內存管理等硬件細節&#xff0c;而抽象出一個進程的概念&#xff0c;讓應用程序專心于實現自己的業務邏輯既可&#xff0c;而且在有限的CPU上可以“同時”進行許多個任務。但是它為用戶帶來方便的同時&#…

嵌入式Linux Qt5 (C++)開發欄目概述

本欄目開始介紹Linux系統下的Qt C程序開發&#xff0c;資源是以嵌入式為切入點&#xff08;現在Linux系統下的Qt C程序開發好像就是應用于嵌入式&#xff09;&#xff0c;那就跟著一起學習Linux系統下的Qt C程序開發知識&#xff0c;再擴展一下嵌入式的知識吧。我這里默認已經熟…

php初解

php是什么&#xff1f; PHP&#xff0c;全稱 Hypertext Preprocessor &#xff0c;中文翻譯“超文本預處理器”。 PHP是一種被廣泛應用的開源通用腳本語言&#xff0c;尤其適用于 Web 開發。 擁有快速&#xff0c;靈活&#xff0c;實用的特點&#xff0c;PHP能做任何事&#xf…

ORACLE中UNION、UNION ALL、MINUS、INTERSECT學習

1、UNION和UNION ALL的使用與區別 如果我們需要將兩個select語句的結果作為一個整體顯示出來&#xff0c;我們就需要用到union或者union all關鍵字。union的作用是將多個結果合并在一起顯示出來。 union和union all的區別是union會自動壓縮多個結果集合中的重復結果&#xff…

高速下載VisualGLM模型文件的解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

GO語言自底向上優化

Go Ballast(通過嘗試降低 GC 頻率以提高整體性能&#xff0c;針對所有 Go應用都適用) 首先我們明白GO語言GC觸發條件是由比例來觸發的。例如&#xff0c;當前存活內存10GB&#xff0c;觸發比例是100%&#xff0c;因此下次觸發GC的時候是當內存達到20GB的時候觸發GC。這種機制在…

碎片筆記|圖數據與圖神經網絡基礎介紹

前言&#xff1a;前段時間了解了一下圖神經網絡&#xff0c;本篇博客記錄一下相關知識&#xff0c;以備不時之需。 強烈推薦這篇博客&#xff08;作者來自 Google Research&#xff09;&#xff0c;個人認為是圖神經網絡基礎入門的不二選擇&#xff01; 目錄 一、圖數據1.1 定義…

Windows上使用FFmpeg實現本地視頻推送模擬海康協議rtsp視頻流

場景 Nginx搭建RTMP服務器FFmpeg實現海康威視攝像頭預覽&#xff1a; Nginx搭建RTMP服務器FFmpeg實現海康威視攝像頭預覽_nginx rtmp 海康攝像頭_霸道流氓氣質的博客-CSDN博客 上面記錄的是使用FFmpeg拉取海康協議攝像頭的rtsp流并推流到流媒體服務器。 如果在其它業務場景…

TCP/IP協議組

TCP/IP通信協議是目前最完整、使用最廣泛的通信協議。它的魅力在于可使不同硬件結構、不同操作系統的計算機相互通信。TCP/IP協議既可用于廣域網&#xff0c;也可用于局域網&#xff0c;它是Internet/Intranet的基石。TCP/IP通信協議事實上是一組協議。 TCP/IP協議可分為5層也可…

使用 Redis 實現共享 Session 的高效解決方案

系列文章目錄 文章目錄 系列文章目錄前言一、為什么需要共享 Session?二、使用 Redis 實現共享 Session1.安裝和配置 Redis2.實現 Session 存取操作3.使用 Session 數據三、測試共享 Session四、注意事項總結前言 在分布式系統中,實現共享 Session 是一個重要的問題。本文將…

GT Code - 圖譯算法編輯器(集成QT、C++、C、Linux、Git、java、web、go、高并發、服務器、分布式、網絡編程、云計算、大數據項目)

目錄 項目概述 發文意義 項目介紹 功能分析 設計概要 功能展示 項目文檔 項目概述 “GT Code 圖譯算法編輯器”是一款跨平臺、輕量級的代碼編輯器&#xff0c;主要面向軟件開發人員&#xff0c;它實現了編輯、編譯、繪制代碼流程圖、生成調試演示動畫等功能&#xff0c;以…

go版本glog/klog 參數使用方法心得

問題 glog很好用&#xff0c;但是官方文檔卻很爛&#xff0c;對于很多參數并沒有做詳細說明&#xff0c;于是通過看源碼測試&#xff0c;總結出以下使用方法 可選參數 flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error in…

空間分析專屬 Python 學習資料

空間數據分析能夠幫助我們更好地理解地理空間中的模式和關系&#xff0c;從而為決策提供支持。例如&#xff0c;城市規劃者可以使用空間數據分析來確定城市發展的最佳方向&#xff0c;環境科學家可以使用空間數據分析來評估污染的影響&#xff0c;而商業分析師可以使用空間數據…

react go實現用戶歷史登錄列表頁面

refer: http://ip-api.com/ 1.首先需要創建一個保存用戶歷史的登錄的表&#xff0c;然后連接go 2.在用戶登錄的時候&#xff0c;獲取用戶的IP IP位置&#xff0c;在后端直接處理數據即可&#xff08;不需要在前端傳遞數據&#xff09; &#xff08;1&#xff09;增加路由&am…

使用Java服務器實現UDP消息的發送和接收(多線程)

目錄 簡介&#xff1a;1. 導入必要的庫2. 創建服務器端代碼3. 創建客戶端代碼4. 實現多線程處理5. 測試運行示例代碼&#xff1a;函數說明服務器端代碼說明&#xff1a;客戶端代碼說明&#xff1a; 總結&#xff1a; 簡介&#xff1a; 在本篇博客中&#xff0c;我們將介紹如何…

genism word2vec方法

文章目錄 概述使用示例模型的保存與使用訓練參數詳解&#xff08;[原鏈接](https://blog.csdn.net/weixin_44852067/article/details/130221655)&#xff09;語料庫訓練 概述 word2vec是按句子來處理的Sentences(句子們) 使用示例 from gensim.models import Word2Vec #sent…

《起風了》C++源代碼

使用方法 Visual Studio、Dev-C、Visual Studio Code等C/C創建一個 .cpp 文件&#xff0c;直接粘貼賦值即可。 #include <iostream> #include <Windows.h> #pragma comment(lib,"winmm.lib") using namespace std; enum Scale {Rest 0, C8 108, B7 …

目錄——車載網絡安全

本文主要匯總車載網絡安全專欄文章,以方便各位讀者閱讀。 ISO21434 概述(一) ISO21434 組織網絡安全管理(二) ISO21434 項目網絡安全管理(三) ISO21434 分布式網絡安全(四) SO21434 持續進行的網絡安全(五) ISO21434 概念階段網絡安全(六)