å®è£ ååå§å
æ好çå®è£ æ¹å¼å°±æ¯ä¸å®è£ ï¼ç´æ¥åå§åå°±è½ç¨ï¼æ²¡éï¼è¿ç§æ¹å¼å°±æ¯ä¸è½½äºè¿å¶çæ¬ï¼è§£ååå°±è½è¿è¡åå§åï¼æå ¥ä½¿ç¨ãå ¶å®çå®è£ æ¹å¼ï¼æ é2ç§ï¼ä¸æ¯æºç ç¼è¯å®è£ ï¼äºæ¯ä½¿ç¨å®è£ å ï¼Linuxä¸ä½¿ç¨yumä¹ç±»ç³»ç»å®è£ å·¥å ·ãæ麻ç¦çæ¯æºç ç¼è¯å®è£ äºï¼è¿ç§æ¹å¼å¾å¾å¯å®å¶æ§é常çµæ´»ï¼å¯ä»¥éæ©éè¦çç»ä»¶è¿è¡ç¼è¯ï¼æ¬æä»ç»çæ¯äºè¿å¶å å®è£ åç¼è¯æ¹å¼å®è£ ãåºè¯ä¸å¤è®²ï¼å ä»ç®åçå¼å§ã
软件å ä¸è½½
æ¢ç¶è¦ä½¿ç¨è¿å¶å®è£ MySQLï¼å¾å ä¸è½½ç¸åºçå®è£ å ï¼é£è¯å®æ¯è¦ä»å®ç½ä¸è½½äºï¼è¿æ¯å¿ é¡»çï¼å 为å®ç½æ¯æå¨çï¼æ£ç¡®æ§åå¯é æ§é½æä¿é(好åæ¯åºè¯)ã
MySQL 社åºçæ¬ ä¸è½½é¡µé¢ï¼https://downloads.mysql.com/archives/community/
ä¸è½½äºè¿å¶å æ¶ï¼å¨ operating systemä¸æå表éæ©ï¼Linux-Generic ï¼å¨ OS Version ä¸æå表ä¸éæ©å¯¹åºçglibcçæ¬åå¹³å°æ¶æï¼32ä½æ64ä½ï¼ã
ä¸è½½æºç å æ¶ï¼å¨ operating systemä¸æå表éæ©ï¼Source Code ï¼å¨ OS Version ä¸æå表ä¸éæ©å¯¹åºçglibcçæ¬åå¹³å°æ¶æï¼32ä½æ64ä½ï¼ã
å¨ OS Version è¿ä¸ªéæ©æ¡éå¯è½ä¼åºç°ä¸åçglibcçæ¬ï¼è¦æä¹éæ©ï¼é£è¿è¦çlinuxæä½ç³»ç»ä¸çglibcççæ¬æ¯ä»ä¹ï¼ä¸è¬æ åµæ¯é«çæ¬å ¼å®¹ä½çæ¬ã
æ¥çç³»ç»glibcçæ¬æ¹æ³ï¼ä¸é¢æ¯centos7.9 x64çè¾åºã
ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
äºè¿å¶å å®è£
äºè¿å¶å å®è£ å®æ¹ææ¡£ï¼https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
mysqlä¾èµlibaioè¿ä¸ªåºï¼éè¦å è¡å®è£
gt; yum search libaio # search for info
gt; yum install libaio # install library
å¨rhel8æcentos8ç8çæ¬è¿éè¦å®è£ ä¸ä¸ªå ï¼å«ncurses-compat-libs
gt; yum install ncurses-compat-libs
å®è£ æ¹å¼å¦ä¸ï¼
- å建mysqlç¨æ·ç»åç¨æ·ï¼åé¢MySQLçè¿è¡å°±ä»¥mysqlçç¨æ·æ¥æ§è¡ï¼æ³¨ææ¤ç¨æ·è¢«è®¾ç½®ä¸ºä¸è½ç»å½ç³»ç»ã
- 解åMySQLæ件å å°ä¸ä¸ªæå®ç®å½ï¼æ¤ç®å½ä½ä¸ºmysqlçå·¥ä½ç®å½ã
- å建ä¸ä¸ªè½¯é¾æ¥ æå解ååºæ¥çæ件夹ã
- å建ä¸ä¸ªåæ¾æ°æ®çç®å½ï¼å¹¶é ç½®æ件夹çæå±ç¨æ·åç»å设置ç®å½æé为750ã
- åå§åæ°æ®åºã
- æ·è´å¯å¨èæ¬å°init.dç®å½ä¸ï¼ä»¥ä¾¿å¼æºèªå¨å¯å¨ã
gt; groupadd mysql
gt; useradd -r -g mysql -s /bin/false mysql
gt; cd /usr/local
gt; tar xvf /path/to/mysql-VERSION-OS.tar.xz
gt; ln -s full-path-to-mysql-VERSION-OS mysql
gt; cd mysql
gt; mkdir mysql-files
gt; chown mysql:mysql mysql-files
gt; chmod 750 mysql-files
gt; bin/mysqld --initialize --user=mysql
gt; bin/mysql_ssl_rsa_setup
gt; bin/mysqld_safe --user=mysql &
# Next command is optional
gt; cp support-files/mysql.server /etc/init.d/mysql.server
以ä¸é¨éª¤æä¸æ§è¡å°ç¬¬5è¡ï¼åé¢çæ¯å¨åå§åæ°æ®åºï¼å¨åé¢åä»ç»ã
解ååºçç®å½éå å«äºmysqlææçå¯å¨å½ä»¤åç¸å ³æ件ï¼ä½æ¯æ¯æ¬¡è¦æ§è¡mysqlç¸å ³å½ä»¤æ¶é½è¦åå ¨è·¯å¾ï¼è¿æç¹ä¸æ¹ä¾¿ï¼æ们å¸æå¨shelléç´æ¥å°±è½è¿è¡èä¸éè¦æå ¨è·¯å¾ï¼ä¸ä¸ªé常çåæ³æ¯å°mysql/binè¿ä¸ªç®å½å å ¥ç¯å¢åéPATHä¸ãé常建议åä¸ä¸ªshellèæ¬æ¾å°/etc/profile.d/ç®å½ä¸,è¦æ³ç«å³çæ,sourceä¸ä¸è¿ä¸ªèæ¬ ï¼æè éå¯ç³»ç»ä¹å¯ä»¥çæã
[root@localhost ~]# cat /etc/profile.d/mysql.sh
#!/bin/bash
MYSQL_HOME=/root/soft/mysql57
PATH=$PATH:$MYSQL_HOME/bin
export PATH MYSQL_HOME
[root@localhost ~]# source /etc/profile.d/mysql.sh
æºç å å®è£
æºç å å®è£ å®æ¹ææ¡£ï¼https://dev.mysql.com/doc/refman/8.0/en/installing-source-distribution.html
å¦æè¦æ³å®è£ è¿ç¨é¡ºå©ï¼å ¶å®æ¯æå å³æ¡ä»¶çï¼https://dev.mysql.com/doc/refman/8.0/en/source-installation-prerequisites.html
MySQL5.7 è¦æ±makeçæ¬å¨3.75æ以ä¸
MySQL8.0 cmakeè¦æ±ï¼
- Linux: GCC 7.1 or Clang 5
- macOS: XCode 10
- Solaris: GCC 10
- Windows: Visual Studio 2019 Update 4
ncurses
openssl openssl-devel
perl
å¦æå®è£ çmysqlæ¯å¼åçæ¬ï¼è¿è¦æ±bison 2.1 ææ´é«çæ¬
æ»ä¹ï¼ç¼ºå°ä»ä¹å°±å®è£ ä»ä¹ã
å®è£ æ¹å¼å¦ä¸ï¼
æºç å çå®è£ æ¹å¼æ¯äºè¿å¶å®è£ ï¼å¤äºå¦ä¸3æ¥ï¼
- mkdir bld;cd bld è¿éå建è¿ä¸ªæ件夹çç®çæ¯åæ¾ç¼è¯åçç®æ æ件ã
- cmake .. è¿éç2个å°ç¹ä¸è½çç¥ï¼å 为cmakeçå ¥å£æ件å¨ä¸ä¸å±ç®å½ä¸ã
- make ç¼è¯
- make install å®è£
# Preconfiguration setup
gt; groupadd mysql
gt; useradd -r -g mysql -s /bin/false mysql
# Beginning of source-build specific instructions
gt; tar zxvf mysql-VERSION.tar.gz
gt; cd mysql-VERSION
gt; mkdir bld
gt; cd bld
gt; cmake ..
gt; make
gt; make install
# End of source-build specific instructions
# Postinstallation setup
gt; cd /usr/local/mysql
gt; mkdir mysql-files
gt; chown mysql:mysql mysql-files
gt; chmod 750 mysql-files
gt; bin/mysqld --initialize --user=mysql
gt; bin/mysql_ssl_rsa_setup
gt; bin/mysqld_safe --user=mysql &
# Next command is optional
gt; cp support-files/mysql.server /etc/init.d/mysql.server
é»è®¤æ åµä¸ï¼æºç å®è£ æ¶ï¼mysql被å®è£ å°äºè¿ä¸ªç®å½ï¼/usr/local/mysqlï¼å½ç¶ä¹å¯ä»¥å åæ°è¿è¡æå®ï¼é½æåªäºåæ°å¢ï¼è¿éç®åååºä¸äºï¼ä¾åèï¼
åæ°å | 解é说æ |
CMAKEBULDTYPE | ç¨æ¥æå®ç¼è¯çæ¯RELEASEçæ¬è¿æ¯DEBUGçæ¬ï¼æè æ¯RelWithDebInfoçæ¬ç |
CMAKEINSTALLPREFIX | ç¨æ¥æå®è£ è·¯å¾ï¼å³å®è£ å°åªä¸ªç®å½ |
MYSQL_DATADIR | ç¨æ¥çæé»è®¤çæ°æ®åºè·¯å¾ï¼å³å¨æ²¡ææå®å¯å¨åæ°--defaults-fileæ¶çé»è®¤æ°æ®åºè·¯å¾ |
OPTIMIZER_TRACE | ç¨æ¥æææ¯å¦æå¼ä¼åå¨TRACE模å |
WITHARCHIVESTORAGE_ENGINE | æ¯å¦æ¯æArchiveåå¨å¼æ |
WITHINNOBASESTORAGE_ENGINE | æ¯å¦æ¯æInnoDBåå¨å¼æ |
WITHBLACKHOLESTORAGE_ENGINE | æ¯å¦æ¯æBLACKHOLEåå¨å¼æ |
WITHEXAMPLESTORAGE_ENGINE | æ¯å¦æ¯æEXAMPLEåå¨å¼æï¼ç¤ºä¾å¼æ |
WITHINNODBMEMCACHED | 表示æ¯å¦æ¯æINNODBçMEMCACHED |
WITHPARTITIONSTORAGE_ENGINE | 表示æ¯å¦æ¯æpartitionåå¨å¼æ |
WITH_SYSTEMD | å¯ç¨systemdæ¯ææ件ï¼å³å¯ä»¥ä½¿ç¨systemctl æ¥ç®¡çMySQLçå¯å¨ãåæ¢ãéå¯ |
以ä¸è¿äºé项å¯ä»¥å¨CMAKEå½ä»¤ä¸éè¿å¨åé¢å ä¸-Dæ¥æå®ç¸åºçå¼ï¼ä¸é¢ç»åºç¤ºä¾ï¼
cmake .. -DCMAKE_INSTALL_PREFIX=/var/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_BOOST=.. \
-DWITH_SYSTEMD=ON
å ³äºæ´å¤çCMAKEé项ï¼åèå®æ¹ææ¡£ï¼https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
é»è®¤åæ°æ åµä¸ï¼ä¸ä¼äº§çsystemd çæ¯ææ件ï¼è¿éæå¨å®è£ çæ¶åï¼å ¶å®ææé项ä¿æé»è®¤ï¼åªå äºä¸ä¸ª-DWITH_SYSTEMD=ONè¿ä¸ªåæ°ï¼ç¨æ¥äº§çmysqld.serviceæ件ã
cmake .. -DWITH_BOOST=.. \
-DWITH_SYSTEMD=ON
cmakeæ§è¡å®æåä¼çå°å¦ä¸æ示ï¼
-- Configuring done
-- Generating done
-- Build files have been written to: /root/soft/mysql-5.7.40/bld
æ¥ä¸æ¥æ§è¡ make,å ä¸ -j 4 表示å¯å¨4个线ç¨æ§è¡makeï¼è¿æ ·ä¼å¿«ä¸äº(æ ¹æ®å å大å°ï¼å¦å线ç¨è¶å¤ï¼å ç¨å åè¶å¤ï¼æä¸å¥½å°±ææºå¨ææäºï¼æå¨4Gèææºå åä¸å¯10个线ç¨å°±æäº)ï¼å®æåå¦ä¸æ示ï¼
[100%] Built target mysqld
[100%] Built target pfs_connect_attr-t
[root@localhost bld]#
æ§è¡make installè¿è¡å®è£
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server
[root@localhost bld]#
å¨cmakeçæ¶åå äºäº§çsystemdæ件çåæ°ï¼ççæ没æ产çï¼å¯ä»¥çå°ç¡®å®äº§çäºï¼mysqld.serviceçæ件ï¼åé¢å°±å¯ä»¥ä½¿ç¨systemctlæ¥ç®¡çæå¡ç«¯äºï¼ã
[root@localhost mysql]# find / -name mysq*.service
/root/soft/mysql-5.7.40/bld/scripts/mysqld.service
/root/soft/mysql-5.7.40/bld/scripts/[email protected]
/usr/local/mysql/usr/lib/systemd/system/mysqld.service
/usr/local/mysql/usr/lib/systemd/system/[email protected]
æäºmysqld.serviceçæ件ï¼è¿å¾æå®æ¾å°åéçè·¯å¾ä¸ï¼ä¸è¬æ¯/usr/lib/systemd/system/ä¸ï¼åæ§è¡systemctl daemon-reload æå¯ä»¥ä½¿ç¨ã
MySQLçsystemd管çå ·ä½è¯¦æ åèå®æ¹ææ¡£ï¼https://dev.mysql.com/doc/refman/8.0/en/using-systemd.html
åå§åæ°æ®åº
ä¸ç®¡ç¨ä»ä¹æ¹å¼å®è£ çæ°æ®åºï¼åå§åè¿ç¨é½æ¯ä¸æ ·çï¼ä¸è¬æ¯å å建ä¸ä¸ªæ°æ®ç®å½ç¨äºåæ¾æ°æ®ï¼å¯¹è¿ä¸ªç®å½é ç½®æå±ç¨æ·åç»åæéï¼åå§åå®æåï¼ä¼å¨è¿ä¸ªç®å½ä¸çæç¸åºçæ件ï¼ä»¥åæææ°æ®é½ä¼åæ¾å¨è¿ä¸ªæ件夹ä¸ã
å®æ¹çæä½å¦ä¸ï¼
gt; mkdir mysql-files
gt; chown mysql:mysql mysql-files
gt; chmod 750 mysql-files
gt; bin/mysqld --initialize --user=mysql
gt; bin/mysql_ssl_rsa_setup
gt; bin/mysqld_safe --user=mysql &
åå§åå®æ¹ææ¡£ï¼https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html
é常å¨åå§åæ¶ä¼æå®ä¸ä¸ªé ç½®æ件ï¼å«my.cnfï¼ä½äºå®è£ ç®å½support-filesç®å½ä¸ï¼å¦æ没æå°±æå¨å建ï¼æ¾å¨/etc/ç®å½ä¸å³å¯ã
[root@localhost mysql]# cat /etc/my.cnf |grep -v "#"
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
basedir=/usr/local/mysql #å®è£
ç®å½
datadir=/opt/mysql57/data #æ°æ®åºç®å½
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
!includedir /etc/my.cnf.d
mysqld --defaults-file=/etc/my.cnf
--initialize --user=mysql
åå§æååï¼ä¼ææ°æ®åºçåå§å¯ç è¿åï¼
2023-03-06T05:45:44.391782Z 0 [Warning] CA certificate ca.pem is self signed.
2023-03-06T05:45:44.412290Z 1 [Note] A temporary password is generated for root@localhost: gAaptc;vD2wh
[root@localhost ~]#
éªè¯ï¼è¿æ¥æµè¯ï¼
常ç¨çmysqlè¿æ¥ç2ç§æ¹å¼ï¼
- 1 tcp/ip æ¯ææ¬å°è¿æ¥åè¿ç¨è¿æ¥ã
- 2 unix socket é常ç¨äºMySQLæå¡ç«¯å客æ·ç«¯é¨ç½²å¨åä¸å°ä¸»æºä¸ã
- 注æ:å¨my.cnfé ç½®æ件ä¸ï¼[client] å [mysqld]ä¸çsocketå®ä¹è¦ç¸åæè¡ã
[root@localhost ~]# mysql -hlocalhost -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.40-log
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
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> show variables like "cache";
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
第ä¸æ¬¡è¿æ¥mysqlåï¼å ¶å®ä¸è½æ§è¡ä»»ä½å½ä»¤ï¼ä¼æ示è¦æ´æ¹å¯ç ï¼æ¹å¯ç æ¹å¼å¦ä¸ï¼
mysql> alter user user() identified by 'frank';
Query OK, 0 rows affected (0.00 sec)
æ¤æ¶çMySQLæå¡å¨ä¹åªè½ä»æ¬æºç»å½ï¼åå æ¯rootç¨æ·çHost主æºå段å¼ä¸ºlocalhostã