MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理 ...
MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體。 MySQL是一種關係資料庫管理系統,關係資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。 MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。 由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境
https://dev.mysql.com/doc/refman/5.7/en/source-installation.html #mysql官網,源碼安裝Mysql,依靠Cmake
下載安裝Cmake
[root@localhost1 cmake-3.9.6]# wget https://cmake.org/files/v3.9/cmake-3.9.6.tar.gz [root@localhost1 cmake-3.9.6]# tar zxf cmake-3.9.6.tar.gz [root@localhost1 cmake-3.9.6]# cd cmake-3.9.6 [root@localhost1 cmake-3.9.6]# ./configure [root@localhost1 cmake-3.9.6]# gmake [root@localhost1 cmake-3.9.6]# gmake install
[root@localhost1 cmake-3.9.6]# which gmake
/usr/bin/gmake
安裝Mysql之前必須要安裝的組件
yum -y install gcc* libaio* ncurses-devel groupadd mysql useradd mysql -s /sbin/nologin -M -g mysql mkdir /opt/mysql-5.7.21/data -p mkdir /opt/mysql-5.7.21/tmp -p chown -R mysql.mysql /opt/mysql-5.7.21 chmod 750 -R /opt/mysql-5.7.21
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html Mysql官網編譯參數詳解
-DCMAKE_INSTALL_PREFIX=dir_name 安裝基礎目錄。 該值可以在伺服器啟動時使用該--basedir選項進行設置 。 -DMYSQL_DATADIR=dir_name MySQL數據目錄的位置。 該值可以在伺服器啟動時使用該--datadir選項進行設置 。 -DMYSQL_UNIX_ADDR=file_name 伺服器偵聽套接字連接的Unix套接字文件路徑。這必須是絕對路徑名稱。預設是/tmp/mysql.sock。 該值可以在伺服器啟動時使用該--socket選項進行設置 。 -DDEFAULT_CHARSET=charset_name 伺服器字元集。預設情況下,MySQL使用 latin1(cp1252西歐)字元集。 charset_name可以是一種 binary,armscii8, ascii,big5, cp1250,cp1251, cp1256,cp1257, cp850,cp852, cp866,cp932, dec8,eucjpms, euckr,gb2312, gbk,geostd8, greek,hebrew, hp8,keybcs2, koi8r,koi8u, latin1,latin2, latin5,latin7, macce,macroman, sjis,swe7, tis620,ucs2, ujis,utf8, utf8mb4,utf16, utf16le,utf32。允許的字元集在cmake/character_sets.cmake文件中被列為 值CHARSETS_AVAILABLE。 該值可以在伺服器啟動時使用該--character_set_server選項進行設置 。 -DDEFAULT_COLLATION=collation_name 伺服器整理。預設情況下,MySQL使用 latin1_swedish_ci。使用該 SHOW COLLATION語句來確定每個字元集可用的排序規則。 該值可以在伺服器啟動時使用該--collation_server選項進行設置 。
cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.7.21 -DMYSQL_DATADIR=/opt/mysql-5.7.21/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/opt/mysql-5.7.21/tmp/mysql.sock -DWITH_BOOST=/opt/boost這個參數是必須的 -DWITH_DEBUG=1#上面沒寫
/etc/my.cnf配置:
[root@localhost init.d]# cat /etc/my.cnf # Example MySQL config file for small systems. # # This is for a system with little memory (<= 64M) where MySQL is only used # from time to time and it's important that the mysqld daemon # doesn't use much resources. # # MySQL programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those # locations. For information about these locations, see # http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option. # The following options will be passed to all MySQL clients #配置指令傳遞給與 MYSQL 伺服器相關的客戶端 [client]#客戶端 #password = your_password #密碼 port = 3306 #服務的埠,如果需要修改,在確保所有配置文件中都修改 socket = /application/mysql-5.1.72/tmp/mysql.sock #套接字文件的路徑 # Here follows entries for some specific programs # The MySQL server #MYSQL 伺服器 [mysqld] #啟動命令腳本文件 port = 3306 #埠 socket = /application/mysql-5.1.72/tmp/mysql.sock #套接字文件的路徑 skip-locking key_buffer_size = 16K #索引塊的緩衝區大小 max_allowed_packet = 1M #服務能請求包的最大大小為 1M table_open_cache = 4 #所有線程所打開表的數量 sort_buffer_size = 64K #排序使用的緩衝區大小 read_buffer_size = 256K #讀查詢操作使用的緩衝區大小 read_rnd_buffer_size = 256K #隨機讀取緩衝區的大小 net_buffer_length = 2K # thread_stack = 128K # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (using the "enable-named-pipe" option) will render mysqld useless! # #skip-networking server-id = 1 #本機的序號, master 進程 # Uncomment the following if you want to log updates #log-bin=mysql-bin # binary logging format - mixed recommended #binlog_format=mixed # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /application/mysql-5.1.72/data #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /application/mysql-5.1.72/data # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 16M #INnodb 緩衝池的大小 #innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 5M #INnodb 日誌文件大小 #innodb_log_buffer_size = 8M #INnodb 日誌緩衝區大小 #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50 #INnodb 事務鎖定前的超時時間 [mysqldump] quick max_allowed_packet = 16M #伺服器發送與接收的包的最大大小 [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [myisamchk] key_buffer_size = 8M sort_buffer_size = 8M [mysqlhotcopy] interactive-timeout #伺服器關閉連接前等待活動的時間
錯誤總結:
MySQL5.7.17在cmake的時候報錯如下: 點擊(此處)摺疊或打開 CMake Error at cmake/boost.cmake:81 (MESSAGE): You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST= This CMake script will look for boost in . If it is not there, it will download and unpack it (in that directory) for you. If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://example.com:80 Call Stack (most recent call first): cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST) CMakeLists.txt:455 (INCLUDE) -- Configuring incomplete, errors occurred! See also "/root/mysqlsoftware/mysql-5.7.17/CMakeFiles/CMakeOutput.log". See also "/root/mysqlsoftware/mysql-5.7.17/CMakeFiles/CMakeError.log". 解決辦法是: 1.在/usr/local下創建一個名為boost的文件夾 mkdir -p /usr/local/boost 2.進入這個新創建的文件夾然後下載boost wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz 3.解壓 tar -xvzf boost_1_59_0.tar.gz 4.繼續cmake,添加上紅色部分 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DCOMPILATION_COMMENT='Mysqlma' \ -DWITH_READLINE=ON \ -DWITH_BOOST=/usr/local/boost \ -DSYSCONFDIR=/data/mysqldata/3306 \ -DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock
-DWITH_BOOST=path_name Boost庫是構建MySQL所必需的。這些 CMake選項可以控制庫源位置,以及是否自動下載它: -DWITH_BOOST=path_name 指定Boost庫目錄位置。也可以通過設置BOOST_ROOT或 WITH_BOOST環境變數來指定Boost位置 。 從MySQL 5.7.11開始,它 -DWITH_BOOST=system是允許的,並且表示在標準位置的編譯主機上安裝了正確版本的Boost。在這種情況下,使用的是Boost的安裝版本,而不是MySQL源代碼發行版中包含的任何版本。 -DDOWNLOAD_BOOST=bool 指定是否在指定位置不存在的情況下下載Boost源。預設是 OFF。 -DDOWNLOAD_BOOST_TIMEOUT=seconds 下載Boost庫的超時時間(秒)。預設值是600秒。 例如,如果您通常構建MySQL,將對象輸出放置在bldMySQL源代碼樹的子目錄中,則可以使用Boost構建,如下所示: mkdir bld cd bld cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost 這會導致Boost被下載到 my_boost您的主目錄下的目錄中。如果所需的Boost版本已經存在,則不進行下載。如果所需的Boost版本更改,則會下載較新的版本。 如果Boost已經在本地安裝,並且編譯器自己找到Boost頭文件,則可能不需要指定前面的CMake選項。但是,如果MySQL所需的Boost版本發生更改並且本地安裝的版本尚未升級,則可能會出現構建問題。使用CMake 選項應該給你一個成功的構建。 通過上述允許將Boost下載到指定位置的設置,當所需的Boost版本發生更改時,您需要刪除該bld文件夾並重新創建該文件夾,然後再次執行cmake步驟。否則,新的Boost版本可能無法下載,編譯可能會失敗。
http://blog.csdn.net/cryhelyxx/article/details/47610247 問題的解決
bin/mysqld --initialize --user=mysql 初始化mysql。指定用戶 --initialize會自動生成密碼
cp /opt/mysql-5.7.21/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
echo 'export PATH=/application/mysql/bin:$PATH'>>/etc/profile
在不知道mysql root密碼的情況下修改密碼 [root@cairui mysql]# bin/mysqld_safe --skip-grant-tables & 在mysql中輸入一下命令 update mysql.user set authentication_string=password('root') where user='root' ;
加入開機啟動 [root@cairui ~]# chkconfig mysqld on
http://www.bubuko.com/infodetail-2167283.html 不需要/etc/my.cnf的解釋
You must SET PASSWORD before executing this statement的解決方法
http://www.jb51.net/article/39187.htm