怎麼透過Systemd編譯Mysql5.7.11
May 29, 2023 pm 06:46 PM
MySQL 5.7主要功能:
原生支援Systemd 更好的效能:對於多核心CPU、固態(tài)硬碟、鎖定有著更好的優(yōu)化更好的InnoDB儲存引擎更為健壯的複製功能:複製帶來了資料完全不遺失的方案,傳統(tǒng)金融客戶也可以選擇使用MySQL資料庫。此外,GTID在線平滑升級也變得可能更好的優(yōu)化器:優(yōu)化器程式碼重構的意義將在這個版本及以後的版本中帶來巨大的改進,Oracle官方正在解決MySQL之前最大的難題原生JSON類型的支援更好的地理資訊服務支援:InnoDB原生支援地理位置類型,支援GeoJSON,GeoHash特性新增sys庫:以後這會是DBA存取最頻繁的庫MySQL 5.7已經(jīng)作為資料庫可選項新增至OneinStack — lnmp安裝工具中
安裝依賴包
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
#下載mysql源碼包
源碼包有兩種版本: mysql- 5.7.11.tar.gz 不含boost函式庫,需自行下載。
mysql-boost-5.7.11.tar.gz 自帶 boost函式庫,解壓縮後的根目錄,推薦下載。 wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-boost-5.7.11.tar.gz
curl -O http://cdn.mysql .com/Downloads/MySQL-5.7/mysql-boost-5.7.11.tar.gz
tar -zxf mysql-boost-5.7.11.tar.gz
# mysql-5.7 .11
編譯
產(chǎn)生makefile「
cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/ mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -LEDMYSQL_TCP_PORT=3306 -DENAB3306_DEN-LEDD _CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ [字元集] -DDEFAULT_COLLATION=utf8_general_ci \ [排序規(guī)則必須有,不然初始化資料庫困難] -DDOWNLOAD_BOOST=1 \ [從MySQL 5.7.5開始Boost程式庫是必要的] -DWITH_BOOST=/root/mysql-5.7.11/5.7.11/ boost \ -DWITH_SYSTEMD=1 [支援Systemd] 加上 -DWITH_SYSTEMD=1可以使用systemd控制mysql服務,預設是不開啟systemd的。
然後make -j 2 && make install
# mysql將會安裝到/usr/local/mysql路徑慢慢等……
配置MySQL
新增mysql用戶和群組
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
修改/usr/local/mysql權限
chown -R mysql:mysql /usr/local/mysql
建立mysql PID 預設目錄
在mysqld.service ,把預設的pid檔案指定到了/var/run/mysqld/ 目錄,而並沒有事先建立該目錄,因此要手動建立該目錄並把權限賦給mysql 用戶。 mkdir -p /var/run/mysqldchown mysql:mysql /var/run/mysqld
mysql 三個運行檔案預設位置
log : /var/log/mysqld.logpid : /var/run/mysqld/mysqld.pidsock : /tmp/mysql.sock
#拷貝my.cnf 和mysqld.service
cp support-files/my-default.cnf /etc/my.cnf
mysql 5.7 預設將mysqld.service
mysql -u root -p mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; [password 為遠程連接密碼] mysql>FLUSH PRIVILEGES; [刷新權限]mysql 5.7 預設將mysqld.service
##rrreeemysql 5.7 預設將mysqld.service##rrreee
mysql 5.7 預設將mysqld.service (/usr/local/mysql/)檔案安裝到了mysql 安裝目錄下的usr/lib/systemdusr/lib/systemd /system/,將mysqld.service 複製到/usr/lib/systemd/system/目錄下[root@localhost]/usr/local/mysql#cp usr/lib/systemd/system/mysqld.service /usr /lib/systemd/system
新增環(huán)境變數(shù)
#— 編輯/etc/profile檔案最後加上以下兩行— “vim /etc/profile
PATH=/usr/local/mysql/bin:$PATH export PATH##source /etc/profile
出現(xiàn)下列內(nèi)容,初始化成功2016-02-22T03:56:27.254356Z 1 [Warning] root@localhost is created with an empty password ! Please consider itching alease consider.
#-–initialize 會產(chǎn)生一個隨機密碼(儲存在~/.mysql_secret),而-–initialize-insecure 不會產(chǎn)生密碼,在MySQL安全設定精靈mysql_secure_installation設定密碼時,可自由選擇mysql 密碼等級。-–datadir目標目錄下不能有資料檔。
先前版本初始化程式mysql_install_db 是在/usr/local/mysql/script 下,並會在將來被移除,轉而使用mysqld替代已被廢棄mysql5.7 放在了/usr/local/ mysql/bin 目錄下。啟動mysql
systemctl start mysqld.servicesystemctl status mysqld.service
##執(zhí)行MySQL安全性設定精靈mysql_secure_installation 設定密碼,mysql 服務啟動後才可執(zhí)行
a)為root用戶設定密碼b)刪除匿名帳號c)取消root用戶遠端登入d)刪除test庫和對test庫的存取權e)刷新授權表使修改生效
[root@localhost mysql]# mysql_secure_installation#########Securing the MySQL server deployment.###Connecting to MySQL using a blank password. [使用空密碼連接到MySQL]
VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin?[VALIDATE密碼插件可以被用來測試密碼 并提高安全性。你是否想設置VALIDATE密碼插件?]
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy: [有三種級別的密碼驗證策略:]
LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file [最小長度> = 8 中等長度> = 8,數(shù)字,大小寫混合和特殊字符 最長長度> = 8,數(shù)字,混合大小寫,特殊字符和字典文件]
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 [請輸入0 =低,1 =中2 =強:0] Please set the password for root here. [請在這里設置root用戶的密碼。]
New password: [新密碼:]
Re-enter new password: [重新輸入新密碼:]
Estimated strength of the password: 25 [密碼的估計強度:25] Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y [您是否希望繼續(xù)與提供的密碼(按y | Y表示是,因為沒有任何其他鍵):Y?] … Failed! Error: Your password does not satisfy the current policy requirements [ … 失??!錯誤:您的密碼不符合當前的要求]
New password:
Re-enter new password:
Estimated strength of the password: 50 [密碼的估計強度:50] Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. [默認情況下,MySQL安裝有一個匿名用戶, 允許任何人登錄到MySQL.]
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y [刪除匿名用戶?] Success. [成功。]
Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network. [通常情況下,Root 只允許其進行’localhost'(本地) 連接 。]
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n [禁止遠程root登錄?]
...omitting. [省略]。] By default, MySQL comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. [默認情況下,MySQL帶有一個名為“測試”數(shù)據(jù)庫,任何人都可以訪問。這也是僅用于測試,并且應該移動到生產(chǎn)之前被刪除環(huán)境。]
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n [刪除測試數(shù)據(jù)庫和訪問權限?]
... omitting. [ ...省略。] Reloading the privilege tables will ensure that all changes made so far will take effect immediately. [刷新授權表以確保所有的變化取得將立即生效。]
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : [現(xiàn)在刷新授權表?]
… skipping. All done! [全部完成!]
開放 Root 遠程連接權限
mysql -u root -p mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; [password 為遠程連接密碼] mysql>FLUSH PRIVILEGES; [刷新權限]
以上是怎麼透過Systemd編譯Mysql5.7.11的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

1.PHP開發(fā)問答社區(qū)首選Laravel MySQL Vue/React組合,因生態(tài)成熟、開發(fā)效率高;2.高性能需依賴緩存(Redis)、數(shù)據(jù)庫優(yōu)化、CDN和異步隊列;3.安全性必須做好輸入過濾、CSRF防護、HTTPS、密碼加密及權限控制;4.變現(xiàn)可選廣告、會員訂閱、打賞、傭金、知識付費等模式,核心是匹配社區(qū)調(diào)性和用戶需求。

PHP設置環(huán)境變量主要有三種方式:1.通過php.ini全局配置;2.通過Web服務器(如Apache的SetEnv或Nginx的fastcgi_param)傳遞;3.在PHP腳本中使用putenv()函數(shù)。其中,php.ini適用於全局且不常變的配置,Web服務器配置適用於需要隔離的場景,putenv()適用於臨時性的變量。持久化策略包括配置文件(如php.ini或Web服務器配置)、.env文件配合dotenv庫加載、CI/CD流程中動態(tài)注入變量。安全管理敏感信息應避免硬編碼,推薦使用.en

要實現(xiàn)MySQL部署自動化,關鍵在於選用Terraform定義資源、Ansible管理配置、Git進行版本控制,並強化安全與權限管理。 1.使用Terraform定義MySQL實例,如AWSRDS的版本、類型、訪問控制等資源屬性;2.通過AnsiblePlaybook實現(xiàn)數(shù)據(jù)庫用戶創(chuàng)建、權限設置等細節(jié)配置;3.所有配置文件納入Git管理,支持變更追蹤與協(xié)作開發(fā);4.避免硬編碼敏感信息,使用Vault或AnsibleVault管理密碼,並設置訪問控制與最小權限原則。

收集用戶行為數(shù)據(jù)需通過PHP記錄瀏覽、搜索、購買等信息至數(shù)據(jù)庫,並清洗分析以挖掘興趣偏好;2.推薦算法選擇應根據(jù)數(shù)據(jù)特徵決定:基於內(nèi)容、協(xié)同過濾、規(guī)則或混合推薦;3.協(xié)同過濾在PHP中可實現(xiàn)為計算用戶餘弦相似度、選K近鄰、加權預測評分並推薦高分商品;4.性能評估用準確率、召回率、F1值及CTR、轉化率並通過A/B測試驗證效果;5.冷啟動問題可通過商品屬性、用戶註冊信息、熱門推薦和專家評價緩解;6.性能優(yōu)化手段包括緩存推薦結果、異步處理、分佈式計算與SQL查詢優(yōu)化,從而提升推薦效率與用戶體驗。

為什麼需要SSL/TLS加密MySQL連接?因為不加密的連接可能導致敏感數(shù)據(jù)被截取,啟用SSL/TLS可防止中間人攻擊並滿足合規(guī)要求;2.如何為MySQL配置SSL/TLS?需生成證書和私鑰,修改配置文件指定ssl-ca、ssl-cert和ssl-key路徑並重啟服務;3.客戶端連接時如何強制使用SSL?通過創(chuàng)建用戶時指定REQUIRESSL或REQUIREX509實現(xiàn);4.SSL配置容易忽略的細節(jié)包括證書路徑權限、證書過期問題以及客戶端配置需求。

選擇合適的PHP框架需根據(jù)項目需求綜合考慮:Laravel適合快速開發(fā),提供EloquentORM和Blade模板引擎,便於數(shù)據(jù)庫操作和動態(tài)表單渲染;Symfony更靈活,適合複雜系統(tǒng);CodeIgniter輕量,適用於對性能要求較高的簡單應用。 2.確保AI模型準確性需從高質(zhì)量數(shù)據(jù)訓練、合理選擇評估指標(如準確率、召回率、F1值)、定期性能評估與模型調(diào)優(yōu)入手,並通過單元測試和集成測試保障代碼質(zhì)量,同時持續(xù)監(jiān)控輸入數(shù)據(jù)以防止數(shù)據(jù)漂移。 3.保護用戶隱私需採取多項措施:對敏感數(shù)據(jù)進行加密存儲(如AES

PHP在智能客服中扮演連接器和大腦中樞角色,負責串聯(lián)前端輸入、數(shù)據(jù)庫存儲與外部AI服務;2.實現(xiàn)時需構建多層架構:前端接收用戶消息,PHP後端預處理並路由請求,先匹配本地知識庫,未命中則調(diào)用外部AI服務如OpenAI或Dialogflow獲取智能回復;3.會話管理由PHP寫入MySQL等數(shù)據(jù)庫,保障上下文連續(xù)性;4.集成AI服務需用Guzzle發(fā)送HTTP請求,安全存儲APIKey,做好錯誤處理與響應解析;5.數(shù)據(jù)庫設計需包含會話、消息、知識庫、用戶表,合理建索引、保障安全與性能,支撐機器人記憶

要讓PHP容器支持自動構建,核心在於配置持續(xù)集成(CI)流程。 1.使用Dockerfile定義PHP環(huán)境,包括基礎鏡像、擴展安裝、依賴管理和權限設置;2.配置GitLabCI等CI/CD工具,通過.gitlab-ci.yml文件定義build、test和deploy階段,實現(xiàn)自動構建、測試和部署;3.集成PHPUnit等測試框架,確保代碼變更後自動運行測試;4.使用Kubernetes等自動化部署策略,通過deployment.yaml文件定義部署配置;5.優(yōu)化Dockerfile,採用多階段構
