本文目錄一覽:
- 1、spring中配置MySql數據源,怎樣配置數據庫信息
- 2、Linux下如何使用源碼安裝mysql且開啟分區 mysql:mysql-5.1.61.tar.gz 求詳細步驟~
- 3、CentOS5.3 – mysql-6.0.10-alpha 源代碼和設置
- 4、如何在linux下安裝mysql數據庫並配置
- 5、有一個php mysql的源碼,該怎麼在本地配置?
- 6、能夠看懂MySQL源碼是一種怎麼樣的體驗?
spring中配置MySql數據源,怎樣配置數據庫信息
spring中配置數據源的幾種常見方式:
#mysql 數據庫配置(jdbc.properties)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/databaseName?useUnicode=truecharacterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
1.使用spring自帶的數據源org.springframework.jdbc.datasource.DriverManagerDataSource;
方式一:
bean id=”propertyConfigurer” class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer” p:location=”/WEB-INF/jdbc.properties” /
bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”
p:driverClassName=”${jdbc.driverClassName}”
p:url=”${jdbc.url}”
p:username=”${jdbc.username}”
p:password=”${jdbc.password}” /
p標記需要:xmlns:p=””
DriverManagerDataSource源碼實現:
public class DriverManagerDataSource extends AbstractDriverBasedDataSource {
public DriverManagerDataSource() {
}
public DriverManagerDataSource(String url) {
}
public DriverManagerDataSource(String url, String username, String password) {
}
public DriverManagerDataSource(String url, Properties conProps) {
}
public void setDriverClassName(String driverClassName) {
}
protected Connection getConnectionFromDriver(Properties props) throws SQLException {
}
protected Connection getConnectionFromDriverManager(String url, Properties props) throws SQLException {
}
}
方式二:
bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”
property name=”driverClassName” value=”oracle.jdbc.driver.OracleDriver” /
property name=”url” value=”jdbc:oracle:thin:@127.0.0.1:1521:ORCL” /
property name=”username” value=”root” /
property name=”password” value=”root” /
/bean
2.DBCP數據源;
DBCP(DataBase connection pool)。是 apache 上的一個 java 連接池項目,也是 tomcat 使用的連接池組件。單獨使用dbcp需要2個包:commons-dbcp.jar,commons-pool.jar由於建立數據庫連接是一個非常耗時耗資源的行為,所以通過連接池預先同數據庫建立一些連接,放在內存中,應用程序需要建立數據庫連接時直接到連接池中申請一個就行,用完後再放回去。
bean id=”dataSource” destroy-method=”close” class=”org.apache.commons.dbcp.BasicDataSource”
property name=”driverClassName” value=”${jdbc.driverClassName}” /
property name=”url” value=”${jdbc.url}” /
property name=”username” value=”${jdbc.username}” /
property name=”password” value=”${jdbc.password}” /
/bean
DBCP實現:
class JdbcUtil
{
private static BasicDataSource bds;
static
{
if(bds==null)
{
bds= new BasicDataSource();
}
//分別設置數據庫的連接參數
bds.setDriverClassName();
bds.setUrl();
bds.setUsername();
bds.setPassword();
}
public static Connection getConnection()
{
return bds.getConnection();
}
3.C3P0數據源;
C3P0是一個開源的JDBC連接池,它實現了數據源和JNDI綁定,支持JDBC3規範和JDBC2的標準擴展。目前使用它的有Hibernate,Spring等。
依賴jar包:c3p0-0.9.1.jar、c3p0-0.9.1.2.jar、c3p0-0.9.1-pre6.jar
c3p0與dbcp區別:
dbcp沒有自動回收空閑連接的功能
c3p0有自動回收空閑連接功能
bean id=”dataSource” class=”com.mchange.v2.c3p0.ComboPooledDataSource” destroy-method=”close”
property name=”driverClass”valueoracle.jdbc.driver.OracleDriver/value/property
property name=”jdbcUrl”valuejdbc:oracle:thin:@localhost:1521:Test/value/property
property name=”user”valueroot/value/property
property name=”password”valueroot/value/property
!–連接池中保留的最小連接數。–
property name=”minPoolSize” value=”10″ /
!–連接池中保留的最大連接數。Default: 15 —
property name=”maxPoolSize” value=”100″ /
!–最大空閑時間,1800秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0 —
property name=”maxIdleTime” value=”1800″ /
!–當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default: 3 —
property name=”acquireIncrement” value=”3″ /
property name=”maxStatements” value=”1000″ /
property name=”initialPoolSize” value=”10″ /
!–每60秒檢查所有連接池中的空閑連接。Default: 0 —
property name=”idleConnectionTestPeriod” value=”60″ /
!–定義在從數據庫獲取新連接失敗後重複嘗試的次數。Default: 30 —
property name=”acquireRetryAttempts” value=”30″ /
property name=”breakAfterAcquireFailure” value=”true” /
property name=”testConnectionOnCheckout” value=”false” /
/bean
4.JNDI數據源;
如果應用配置在高性能的應用服務器(如WebLogic或Websphere等)上,我們可能更希望使用應用服務器本身
提供的數據源。應用服務器的數據源 使用JNDI開放調用者使用,Spring為此專門提供引用JNDI資源的
JndiObjectFactoryBean類。下面是一個簡單的配置:
方式一:
bean id=”dataSource” class=”org.springframework.jndi.JndiObjectFactoryBean”
property name=”jndiName” value=”java:comp/env/jdbc/bbt”/
/bean
value值即JNDI的名稱
方式二:
bean id=”queueTarget” class=”org.springframework.jndi.JndiObjectTargetSource”
property name=”jndiName”
valuequeue/testQueue/value
/property
/bean
方式三:
如果不使用JndiTemplate實現InitialContext環境變量的配置,則需要jndi.properties文件(放在classpath中,一般放在src下面),內容如下
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
方式四:
使用JndiTemplate實現InitialContext環境變量的配置,例如
bean id=”queueTarget” class=”org.springframework.jndi.JndiObjectTargetSource”
property name=”jndiName”
valuequeue/testQueue/value
/property
property name=”jndiTemplate”
ref local=”jndiTemplate”/
/property
/bean
bean id=”jndiTemplate” class=”org.springframework.jndi.JndiTemplate”
property name=”environment”
props
prop key=”java.naming.factory.initial”org.jnp.interfaces.NamingContextFactory/prop
prop key=”java.naming.provider.url”jnp://localhost:1099/prop
prop key=”java.naming.factory.url.pkgs”org.jboss.naming:org.jnp.interfaces/prop
/props
/property
/bean
Linux下如何使用源碼安裝mysql且開啟分區 mysql:mysql-5.1.61.tar.gz 求詳細步驟~
1.實現linux下純手動MySQL源碼安裝,首先要下載MySQL的源碼,我下載的是MySQL-5.0.87.tar.gz 2.解壓tar –xvf MySQL-5.0.87.tar.gz 3.進入MySQL-5.0.87 4.檢測環境並指定安裝目錄:./configure –prefix=/usr/local/MySQL 檢測出來缺什麼就安裝什麼。我裝的時候居然連gcc和g++都沒有,沒有編譯器的話就要直接下載rpm包(已編譯好的二進制文件)再安裝到系統。 如下是安裝gcc的命令(要先去下載這個包,這個地址有比較多的rpm包下載): sudo rpm -ivh gcc-4.1.2_20070115-0.11.i586.rpm 安裝這些rpm包的過程中有些是已安裝的,或者是自己依賴自己導致安裝不了,反正安裝不了就用強制安裝並忽略依賴的命令 sudo rpm -ivh gcc-4.1.2_20070115-0.11.i586.rpm –-force –nodeps 可能進過安裝一系列的rmp包後,終於完成了環境檢測。我大概裝了10+個的rmp包才完成。。杯具啊 5.編譯:make 6.安裝:sudo make install 7.實現linux下純手動MySQL源碼安裝中要進行配置。首先可以看到安裝完的目錄如下 在share/MySQL下打命令:ls –l | grep my- 出來的都是MySQL的配置文件,按照需要選擇其中一個拷到/etc下命名為my.cnf /etc/my.cnf是MySQL默認讀的配置文件的路徑 8.修改var的可寫權限。這是MySQL的數據庫數據文件存放的位置,因為用當前用戶來運行MySQL的後台程序可能沒有這個目錄的可寫權限。 chmod 777 ./var –r 9.配置系統環境變量,使得可以直接執行MySQL的程序 系統的環境變量是放在/etc/profile下的,而用戶的環境變量是放在用戶的根目錄下的.bashrc下 (1) /etc/profile的配置: PATH=/usr/local/MySQL/bin:$PATH PATH=/usr/local/MySQL/libexec:$PATH export PATH其中/usr/local/mydql/bin是MySQL主要的可執行程序的目錄,而libexec是放MySQL的後台主程序MySQLd的 (2).bashrc的配置: set PATH=/usr/local/MySQL/bin:$PATH set PATH=/usr/local/MySQL/libexec:$PATH export PATH這裡注意.bashrc裡面是要加個set的。配置完後重登錄就可以生效了 10.在啟動MySQLd之前要先初始化它,執行MySQL_install_db 11.啟動MySQLd,直接打MySQLd就可以了,因為之前配置過系統環境變量了 12.直接MySQL進入MySQL的命令行控制。默認是以當前用戶名登錄的,默認root是沒有密碼的 13.設置root的密碼:MySQLadmin –u root password ‘123456’ 14.以root身份登錄:MySQL –uroot –p 15.設置遠程登錄數據庫。用戶創建後默認是只能在本地登錄的。 update user set Host=’%’ where user=‘kuncai’; 這句是將kuncai這個用戶的允許登錄的地址改成任意,但不包括本地。也就是說這樣kuncai這個用戶就無法在本地登錄了,只能遠程登錄。 只有root用戶才能執行這句,所以要先以root用戶登錄到本地數據庫才行。 flush privileges; 要再執行這句刷新緩存才能生效。以上的相關內容就是對linux下純手動MySQL源碼安裝的介紹,望你能有所收穫。 感謝你們能看到這些,如果大家有興趣開個自己的-淘-寶-網-店,小成本的進行-創-業-嘗試,可以加我Q1300-855-633,進行諮詢聯繫
CentOS5.3 – mysql-6.0.10-alpha 源代碼和設置
1,下載mysql數據庫 源代碼 : mysql-6.0.10-alpha.tar.gz 2, 解壓 文件比較多,解壓也一段時間。 src]# tar vxzf mysql-6.0.10-alpha.tar.gz 3, 進入目錄進行 - 配置,編譯,安裝 ]# cd mysql-6.0.10-alpha 配置生成 makefile 文件 ]# ./configure –sysconfdir=/etc checking for termcap functions library… configure: error: No curses/termcap library found 出現錯誤,也就是生成 makefile 文件出錯了。 [root@localhost mysql-6.0.10-alpha]# make make: *** No targets specified and no makefile found. Stop. 如果你硬要輸入 make 命令是不行的,因為 makefile 根本沒有生成成功。 解決辦法: 我們加入 –with-named-curses-libs=/usr/lib/libncursesw.so.5 進行生成 makefile ./configure –sysconfdir=/etc –with-named-curses-libs=/usr/lib/libncursesw.so.5 Thank you for choosing MySQL! 看到這句話,生成 makefile 成功了。 下面進行make編譯: 需要的時間比較長。 ]# make 編譯安裝雖然花費的時間比較長,但是它應該可以適合任何一個發行版本的 Linux,編譯的中途過程我就不播放視頻出來了,截斷一部分。我現在已經編譯完成。 make[1]: Leaving directory `/opt/mysql-6.0.10-alpha/sql-bench’ Making all in win make[1]: Entering directory `/opt/mysql-6.0.10-alpha/win’ make[1]: Nothing to be done for `all’. make[1]: Leaving directory `/opt/mysql-6.0.10-alpha/win’ 最後進行安裝 ]# make install 編譯安裝完畢,有時候需要很長時間,如何判斷是否死機? 注意觀察主機的硬盤燈,編譯安裝時候 硬盤燈是一閃一閃的,有數據讀取。 下面拷貝配置文件 ]# cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf 以後配置mysql ,就修改 /etc/my.cnf 即可 4, 初始化數據庫 # useradd -d /usr/local/var mysql # su – mysql $ /usr/local/bin/mysql_install_db 初始化出現錯誤。 Installing MySQL system tables… 090518 7:16:41 [ERROR] /usr/local/libexec/mysqld: unknown option ‘–skip-federated’ 090518 7:16:41 [ERROR] Aborting 090518 7:16:41 [Note] /usr/local/libexec/mysqld: Shutdown complete 我們解決辦法是,先 刪掉 /usr/local/var 下的 mysql 文件夾 rm -rf /usr/local/var/mysql 然後修改 vi /etc/my.cnf 找到skip-federated 注釋掉 ,也就是改成 ####skip-federated 然後保存退出 su – mysql 用會 mysql 身份, 來重新初始化 /usr/local/bin/mysql_install_db 這次成功了吧,沒有出現錯誤信息。 5, 啟動服務器 [mysql@localhost var]$ /usr/local/bin/mysqld_safe 現在成功了, 用 netstat -tnl 看到 3306 熟悉的 mysql默認端口 6, 登陸測試 [mysql@localhost local]$ mysql -u root 成功的話, 出現 mysql mysql\s mysql\q 可以使用 show databases; 一般,如果你是編譯安裝mysql ,建議你像我下面的做法 提升為 root 用戶, su – cp /usr/local/share/mysql/mysql.server /etc/init.d/mysqld mysql 關閉的命令為:/etc/init.d/mysqld stop [root@localhost ~]# /etc/init.d/mysqld stop Shutting down MySQL.090518 07:26:41 mysqld_safe mysqld from pid file /usr/local/var/localhost.localdomain.pid ended SUCCESS! 就會顯示 關閉成功。 mysql 啟動的命令為:/etc/init.d/mysqld start [root@localhost ~]# /etc/init.d/mysqld start Starting MySQL. SUCCESS! 下面修改 服務器啟動時候,就自動運行 mysql 6.0 vi /etc/rc.d/rc.local 我把它運行在 tomcat 前面, 然後保存退出。 ##################### 分隔 ###################### –查看數據庫的字符集 show variables like ‘character\_set\_%’; show variables like ‘collation_%’; 13:15 瀏覽(587) 評論(0) 分類: CentOS 2009-07-21 縮略顯示 CentOS5.3 編譯 mod_jk 1.2.15 鏈接器 整合apache httpd 和 tomcat關鍵字: centos mod_jk 現在我們來做一個整合,也就是當訪問 apache 80 端口時候 遇到 jsp 文件也可以正常訪問。 如果不整合, 你的apache 80 是不能運行jsp文件的, 只能使用8080端口,也就是tomcat 來訪問。 如何整合呢 ? 要藉助一個叫做 apache tomcat 的鏈接器。 下面是官方網站的下載地址,目前為止最新版是 1.2.15。。。 文章最後我會把這個工具提供下載,如果官方網站太慢的話。 首先下載 jakarta-tomcat-connectors-1.2.15-src.tar.gz 到服務器 解壓 ]# tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz 注意是進入: jk/native 這個目錄 ]# cd jakarta-tomcat-connectors-1.2.15-src/jk/native 請確認你的 apache 的 apxs 文件位置 native]# ./configure –with-apxs=/usr/local/apache2/bin/apxs 編譯生成mod_jk native]# make 拷貝編譯完成生成的 mod_jk.so 文件, 這裡也是要注意你的apache modules 目錄位置 native]# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/ =============================================== 修改apache 配置文件 # vi /etc/httpd.conf 在DirectoryIndex中添加 index.jsp IfModule dir_module DirectoryIndex index.html index.jsp /IfModule 增加關於加載mod_jk的語句: LoadModule jk_module modules/mod_jk.so Include /usr/local/apache2/conf/mod_jk.conf 添加以下內容( 添加的時候去掉注釋,可能文件不能顯示中文 ): ###### 指出mod_jk模塊工作所需要的工作文件workers.properties的位置 JkWorkersFile /usr/local/apache2/conf/workers.properties ###### Where to put jk logs JkLogFile /usr/local/apache2/logs/mod_jk.log ###### Set the jk log level [debug/error/info] JkLogLevel info ###### Select the log format JkLogStampFormat “[%a %b %d %H:%M:%S %Y]” ###### JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories ###### JkRequestLogFormat set the request format JkRequestLogFormat “%w %V %T” ###### 將所有servlet 和jsp請求通過ajp13的協議送給Tomcat,讓Tomcat來處理 JkMount /servlet/* worker1 JkMount /*.jsp worker1 JkMount /*.do worker1 把一些注釋去掉吧,只些一些起作用的語句上去。保存退出。 =================================================== 在/usr/local/apache2/conf/ 下面 建立兩個配置文件mod_jk.conf和workers.propertie 注意: ( 如果沒有 conf 目錄,可以建立,因為我安裝時指定把 httpd.conf 放在 /etc 下的,就沒有 conf 目錄了 ) # vi mod_jk.conf 添加以下內容( 添加的時候去掉注釋,可能文件不能顯示中文 ): ###### 指出mod_jk模塊工作所需要的工作文件workers.properties的位置 JkWorkersFile /usr/local/apache2/conf/workers.properties ###### Where to put jk logs JkLogFile /usr/local/apache2/logs/mod_jk.log ###### Set the jk log level [debug/error/info] JkLogLevel info ###### Select the log format JkLogStampFormat “[%a %b %d %H:%M:%S %Y]” ###### JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories ###### JkRequestLogFormat set the request format JkRequestLogFormat “%w %V %T” ###### 將所有servlet 和jsp請求通過ajp13的協議送給Tomcat,讓Tomcat來處理 JkMount /servlet/* worker1 JkMount /*.jsp worker1 JkMount /*.do worker1 ———————————————————— # vi workers.properties 添加以下內容: ####### Defining a worker named worker1 and of type ajp13 worker.list=worker1 ####### Set properties for worker1 worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009 worker.worker1.lbfactor=50 worker.worker1.cachesize=10 worker.worker1.cache_timeout=600 worker.worker1.socket_keepalive=1 worker.worker1.socket_timeout=300 ——————- 我的tomcat 配置文件路徑: /usr/local/tomcat/conf/server.xml 最後編輯Tomcat的配置文件server.xml,在 Host 段中加入: Context path=”” docBase=”/usr/local/apache2/htdocs” debug=”0″ reloadable=”true” crossContext=”true”/ 重新啟動Apache和Tomcat。。。 [root@localhost bin]# ./shutdown.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/jdk1.7.0 [root@localhost bin]# ./startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/jdk1.7.0 # /usr/local/apache2/bin/apachectl stop # /usr/local/apache2/bin/apachectl start 剛才我在修改 httpd.conf 可能寫入了一些多餘信息 導致apache配置文件出錯,我注釋就可以了。 在/usr/local/apache2/htdocs/ 下 刪掉 index.html 建立一個index.jsp , 寫入一些簡單的內容: % out.println( “Hello ” ); % 用瀏覽器訪問服務器 ,看到正確的頁面了。 說明apache 遇到jsp頁面 ,它可以提交給 tomcat 去處理。。。 18:21 瀏覽(315) 評論(0) 分類: CentOS 2009-07-21 縮略顯示 centos“You don’t have permission to access /index.html on this server.”關鍵字: centos Forbidden You don’t have permission to access /index.html on this server. 開始我以為我配置出錯,花半天時間都沒有搞定,今天終於搞定了. 原因:index.html是用root用戶建的文件,apache權限不夠。 解決方法:更改文件權限;chmod 755 index.html 17:09 瀏覽(498) 評論(0) 分類: CentOS 2009-07-17 縮略顯示 CentOS5.3 編譯安裝 apache 2.2.11 web服務器(httpd-2.2.11.tar.gz)關鍵字: centos apache (現檢測是否已經安裝apapche,如果有的話請卸載後重新安裝) 1, 首先你必須下載 : httpd-2.2.11.tar.gz 當然你也可以到官方 上下載。 2, 解壓 src]# tar vxzf httpd-2.2.11.tar.gz 3, 進入目錄 # cd httpd-2.2.11 httpd-2.2.11]# ./configure –sysconfdir=/etc –enable-ssl –enable-modules 配置文件放在 /etc 下 no SSL-C headers found configure: error: …No recognized SSL/TLS toolkit detected 沒有ssl 我們,生成makefile 文件失敗,以後再安裝 openssl 也可以 httpd-2.2.11]# ./configure –sysconfdir=/etc –enable-modules 好,這次沒有發現什麼錯誤, –enable-modules 這個強烈建議加上, 也就是說 以後apache 可以添加其他的模塊,方便很多。 下面進行編譯,make編譯 需要一定的時間,不過比起編譯mysql要快些。 httpd-2.2.11]# make 下面進行安裝 httpd-2.2.11]# make install 安裝完成了。。。 4, 啟動服務 測試一下吧。 ]# /usr/local/apache2/bin/apachectl start # netstat -tnl 可以看到 80 端口,說明apache啟動了。 tcp 0 0 :::80 :::* LISTEN 打開瀏覽器進行訪問吧。 # ifconfig 查看 Linux 服務器ip地址。 inet addr:192.168.138.128 看到It works! 說明正常工作了 cd /usr/local/apache2/ 可以看到 htdocs 就是 web 服務器的 目錄所在 你可以想我這樣 vi test.html 上面寫一些信息,然後進行訪問。 讓Apache 自動啟動 # echo “/usr/local/apache2/bin/apachectl start ” /etc/rc.local (或者手動在/etc/rc.d/rc.local中設置) 好,然後重啟服務器,就可以發現 apache 自動啟動了
如何在linux下安裝mysql數據庫並配置
如何在linux下安裝mysql數據庫並配置
關於本文
本文將以MySQL 5.0.51為例,以CentOS 5為平台,講述MySQL數據庫的安裝和設置。
2. 關於MySQL
MySQL是最流行的開源SQL數據庫管理系統,它由MySQL AB開發、發布和支持。MySQL AB是一家由MySQL開發人員創建的商業公司,它是一家使用了一種成功的商業模式來結合開源價值和方法論的第二代開源公司。MySQL是MySQL AB的註冊商標。
MySQL是一個快速的、多線程、多用戶和健壯的SQL數據庫服務器。MySQL服務器支持關鍵任務、重負載生產系統的使用,也可以將它嵌入到一個大配置(mass-deployed)的軟件中去。
MySQL的官方發音是“My Ess Que Ell”,而不是“My sequel”。但是你也可以使用“My sequel”和其他的方言。
MySQL網站()提供了關於MySQL和MySQL AB的最新的消息。
MySQL具有如下特點或特性:
MySQL是一個數據庫管理系統;
MySQL是一個關係數據庫管理系統;
MySQL是開源的;
MySQL服務器是一個快的、可靠的和易於使用的數據庫服務器;
MySQL服務器工作在客戶/服務器或嵌入系統中;
有大量的MySQL軟件可以使用。
3. MySQL的安裝
MySQL有兩種安裝方式:源碼包安裝和二進制包安裝。這兩種方式各有特色:二位制包安裝不需編譯,針對不同的平台有經過優化編譯的不同的二進制文件以及包格式,安裝簡單方便;源碼包則必須先配置編譯再安裝,可以根據你所用的主機環境進行優化,選擇最佳的配置值,安裝定製更靈活。下面分別介紹這兩種安裝方式。
3.1 源碼包方式安裝
3.1.1 在linux系統中添加運行Mysql的用戶和組
/usr/sbin/groupadd mysql
/usr/sbin/useradd -d /var/lib/mysql -s /sbin/nologin -g mysql mysql
3.1.2 下載最新穩定發行版(GA)的MySQL軟件
訪問MySQL網站下載最新穩定發行版的MySQL源碼包。本文使用的是5.0.51版本,在linux系統下用下面的命令下載:
wget
3.1.3 解壓縮下載的源碼包
首先建立一個工作目錄( 筆者建議的目錄為/usr/local/src/mysql ) :
mkdir -p /usr/local/src/mysql
將下載的源碼包移至工作目錄:
mv mysql-5.0.51.tar.gz /usr/local/src/mysql
進入工作目錄並用tar命令解壓源碼包:
cd /usr/local/src/mysql
tar zxvf mysql-5.0.51.tar.gz
命令執行結束後,當前工作目錄下將生成一個新的子目錄mysql-5.0.51,此目錄下即為mysql的源碼文件。
3.1.4 配置Makefile文件
進入MySQL源碼目錄:
cd mysql-5.0.51
執行下面的命令可查看可配置選項:
./configure –help
本文使用的配置命令格式如下:
CC=gcc CFLAGS=”-O3″ CXX=gcc CXXFLAGS=”-O3 -felide-constructors -fno-exceptions -fno-rtti” ./configure –prefix=/usr/local/mysql –enable-thread-safe-client –enable-assembler –with-big-tables –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static –with-charset=utf8 –with-collation=utf8_general_ci –with-extra-charsets=complex
配置選項說明:
CC:C編譯器的名稱(用於運行configure),本文示例為gcc
CFLAGS:C編譯器的標誌(用於運行configure),本文示例為-O3,指定優化級別為3
CXX:C++編譯器的名稱(用於運行configure),本文示例為gcc
CXXFLAGS:C++編譯器的標誌(用於運行configure)
–prefix:指定安裝目錄,本文示例為/usr/local/mysql
–localstatedir:指定默認數據庫文件保存目錄,默認為安裝目錄下的var目錄
–enable-thread-safe-client:編譯線程安全版的MySQL客戶端庫
–enable-assembler:使用一些字符函數的彙編版本
–with-client-ldflags:客戶端鏈接參數,本文示例為指定靜態編譯mysql客戶端
–with-mysqld-ldflags:服務器端鏈接參數,本文示例為指定靜態編譯mysql服務器
–with-big-tables:在32位平台上支持大於4G行的表
–with-charset:指定默認字符集。mysql默認使用latin1(cp1252)字符集,可以使用此選項更改。字符集可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或win1251ukr。
–with-collation:指定默認校對規則。mysql默認使用latin1_swedish_ci校對規則,可以使用此選項更改。
–with-extra-charsets:服務器需要支持的字符集,有三種可能的值:空格間隔的一系列字符集名;complex ,包括不能動態裝載的所有字符集;all,將所有字符集包括進二進制。本文示例為complex。
注意:要想更改字符集和校對規則,要同時使用–with-charset和–with-collation選項。 校對規則必須是字符集的合法校對規則。(在mysql中使用SHOW COLLATION語句來確定每個字符集使用哪個校對規則)。
3.1.5 編譯源代碼
執行下面的命令編譯源代碼:
make
3.1.6 安裝
執行下面的命令安裝mysql到目標路徑:
make install
3.1.7 複製默認全局啟動參數配置文件到/etc目錄
源碼方式安裝需要手動複製配置文件,配置模板位於源碼樹的support-files目錄,有my-small.cnf、my-medium.cnf、my-large.cnf、my-huge.cnf四個,選擇跟你的環境相接近的一個複製到/etc目錄,並做適當修改。關於mysql配置文件的詳細信息請參閱筆者的其它文章或是mysql官方文檔。
本文示例選擇my-medium.cnf,執行下面的命令將其複製到/etc目錄:
cp ./support-files/my-medium.cnf /etc/my.cnf
3.1.8 初始化授權表
執行下面的命令初始化授權表:
./scripts/mysql_install_db –user=mysql
3.1.9 更改mysql數據目錄屬主和權限
默認數據庫文件保存目錄為安裝目錄下的var目錄,執行configure命令時可通過–localstatedir參數指定不同的目錄,本文示例為默認位置。
chown -R mysql.mysql /usr/local/mysql/var
chmod -R 700 /usr/local/mysql/var
3.1.10 設置開機自啟動服務控制腳本
執行下面的命令複製啟動腳本到資源目錄:
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
執行下面的命令增加mysqld服務控制腳本執行權限:
chmod +x /etc/rc.d/init.d/mysqld
執行下面的命令將mysqld服務加入到系統服務:
chkconfig –add mysqld
執行下面的命令檢查mysqld服務是否已經生效:
chkconfig –list mysqld
命令輸出類似下面的結果:
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
表明mysqld服務已經生效,在2、3、4、5運行級別隨系統啟動而自動啟動,以後可以使用service命令控制mysql的啟動和停止。
啟動mysqld服務:
service mysqld start
停止mysqld服務:
service mysqld stop
執行下面的命令關閉開機自啟動:
chkconfig mysqld off
執行下面的命令可以改變開機自啟動的運行級別為3、5:
chkconfig –level 35 mysqld on
3.1.11 將mysql的bin目錄加入PATH環境變量
編輯/etc/profile文件:
vi /etc/profile
在文件最後添加如下兩行:
PATH=$PATH:/usr/local/mysql/bin
export PATH
執行下面的命令使所做的更改生效:
. /etc/profile
3.2 二進制包方式安裝
3.2.1 從安裝媒體安裝
Mysql二進制包已經包含在CentOS 5的安裝媒體中,可以直接從安裝媒體中安裝下面三個rpm包:
mysql-5.0.22-2.1.0.1.i386.rpm
mysql-devel-5.0.22-2.1.0.1.i386.rpm
mysql-server-5.0.22-2.1.0.1.i386.rpm
不同的版本文件名有所不同,請注意區分。
執行下面的命令安裝:
rpm -iUvh mysql-5.0.22-2.1.0.1.i386.rpm
rpm -iUvh mysql-devel-5.0.22-2.1.0.1.i386.rpm
rpm -iUvh mysql-server-5.0.22-2.1.0.1.i386.rpm
3.2.2 通過yum安裝
如果你安裝的機器此時可以連接到互聯網,筆者建議使用yum命令來簡化安裝過程:
yum install mysql-server mysql-devel mysql
yum將自動從centos的鏡像站點查找你指明的軟件的最新二進制包,並檢查軟件包依賴關係,安裝軟件的同時自動安裝其依賴的軟件包。
3.2.3 從mysql網站下載最新穩定版本的二進制包安裝
通過CentOS安裝媒體或yum安裝的二進制包版本會落後於mysql開發者網站發布的版本,可以從mysql網站下載安裝最新穩定版本的mysql。
訪問MySQL網站下載最新穩定發行版的相應硬件平台的MySQL。本文使用的是Red Hat Enterprise Linux 5 RPM (x86) 5.0.45版本。需要下載Server、Client、Headers and Libraries、Share Libraries/Shared compatibility libraries幾個rpm包,其它為可選包,按需要選擇。
在linux系統下用下面的命令下載:
wget
wget
wget
wget
wget
執行下面的命令安裝:
rpm -iUvh MySQL-server-community-5.0.45-0.rhel5.i386.rpm
rpm -iUvh MySQL-client-community-5.0.45-0.rhel5.i386.rpm
rpm -iUvh MySQL-devel-community-5.0.45-0.rhel5.i386.rpm
rpm -iUvh MySQL-shared-community-5.0.45-0.rhel5.i386.rpm
rpm -iUvh MySQL-shared-compat-5.0.45-0.rhel5.i386.rpm
4. MySQL的配置
4.1 目錄結構
4.1.1 源碼包方式安裝目錄結構
源碼包方式安裝時通常是在3.1.4節中configure命令的–prefix選項指定的目錄中建立如下的目錄結構,特殊指定的目錄除外:
./bin #mysql用戶可執行文件目錄
./include/mysql #mysql C頭文件目錄
./info #mysql 信息文件目錄
./lib/mysql #mysql庫文件目錄
./libexec #mysql後台daemon程序目錄
./man #mysql聯機幫助文檔目錄
./mysql-test #mysql測試程序目錄
./share/mysql #mysql公用文件目錄,包括字符集、配置文件模板、啟動腳本、初始化SQL文件等
./sql-bench #mysql壓力測試程序目錄
/etc/my.cnf #mysql配置文件
/etc/rc.d/init.d/mysqld #mysqld服務啟動腳本
4.1.2 RPM二進制包方式安裝目錄結構
二進制包方式安裝時使用系統軟件默認目錄結構 :
/usr/bin #mysql用戶可執行文件目錄
/usr/libexec #mysql後台daemon程序目錄
/usr/lib/mysql #mysql庫文件目錄
/usr/lib64/mysql #如果為64系統,mysql 64位庫文件目錄
/usr/share/doc #mysql文檔目錄
/usr/share/info #mysql信息文件目錄
/usr/share/man #mysql聯機幫助文檔目錄
/usr/share/mysql #mysql字符集目錄
/usr/include/mysql #mysql C頭文件目錄
/var/log #mysqld服務日誌文件目錄
/var/run/mysqld #mysqld服務運行狀態目錄
/var/lib/mysql #mysql數據文件目錄
/etc/my.cnf #mysql配置文件
/etc/rc.d/init.d/mysqld #mysqld服務啟動腳本
4.2 配置文件
Linux系統下,mysql的配置參數文件為my.cnf,一般按下面的順序查找此文件:/etc目錄、mysql安裝目錄、mysql數據目錄。配置模板位於源碼樹的support-files目錄,有my-small.cnf、my-medium.cnf、my-large.cnf、my-huge.cnf四個,關於mysql配置文件的詳細信息請參閱筆者的其它文章或是mysql官方文檔。
4.3 啟動mysqld服務
執行下面的命令啟動mysql:
service mysqld start
4.3 設置mysql帳號
mysql安裝後默認生成兩個帳號:一個是root,未設置密碼,可以從本機登錄到mysql;另一個是匿名帳號,無帳號名、無密碼,可以從本機登錄,未提供用戶名的連接都將假定為此帳號。這樣的設置存在着安全隱患,按下面的步驟進行更改。
以root帳號連接到mysql服務器:
mysql -u root
如果提示找不到mysql文件,請嘗試使用絕對路徑,如本文示例為:
/usr/local/mysql/bin/mysql -u root
命令成功執行後將進入到mysql命令提示符下:
mysql
(以下命令均在mysql命令提示符下執行)
改變當前數據庫為mysql:
use mysql
設置從本地主機登錄的root帳號密碼:
set password for root@localhost=password(‘your password’);
或:
update user set password=password(‘your password’) where user=’root’ and host=’localhost’;
刪除匿名帳號:
delete from user where user=” ;
刪除密碼為空的帳號:
delete from user where password=”;
刪除允許非localhost主機登錄的帳號:
delete from user where host’localhost’ ;
執行下面的命令使更改生效:
flush privileges ;
執行下面的命令退出mysql命令行:
quit
或:
/q
5. 結束語
至此,Mysql基本安裝完畢。希望本文能對初學者有所幫助。
有一個php mysql的源碼,該怎麼在本地配置?
本地先需要架設PHP+MYSQL的服務器,然後根據提示安裝代碼。
一般有倆種安裝方式
一種非常簡單,直接把代碼複製到PHP+MYSQL的服務器的根目錄。按照提示訪問,一直確定就行
一種相對複雜點,把代碼複製到PHP+MYSQL的服務器的根目錄。然後根據提示找到數據庫連接文件,用網頁編程工具把數據庫改成你的,這個先要在MYSQL中建立數據庫,再找到你的代碼的數據備份導入數據庫就行。
要想複雜就很複雜,建議先學習各類網頁工具和數據庫工具。
能夠看懂MySQL源碼是一種怎麼樣的體驗?
首先mysql是c++開發的。
github地址:
很多大型軟件基本都是c/c++開發的。你會了c/c++基本就具備了領略程序世界的大門的鑰匙。
mysql是一個完善的數據庫軟件。
最上層:處理連接,授權認證,安全等
第二層:核心服務功能:查詢解析,分析,優化,緩存以及所有內置函數(日期,時間,數據,加密等),存儲過程,觸發器,視圖等。
第三層:存儲引擎,存儲引擎負責mysql中數據的存儲和提取。每個引擎各有優勢。服務器通過API與存儲引擎進行通信。接口屏蔽了不同引擎的差異,對上層的查詢過程透明。
你如果去讀它,你基本就可以深入到這些業務點中。然後獲取的提升絕對不是一星半點。你會發現開發一個web應用,開發一個中間件如此簡單。你獲取的是大神級工程師的開發思想,技巧。
舉個例子:MVCC ,innodb 隔離性實現的技術。
設計原理很簡單,也很巧妙。對數據安全和高並發做了平衡處理。
這個是單純學習計算機語言,算法數據結構給不了的體驗。
當前,你得能看的下去,你有那個恆心。吹牛逼就不要在這裡問了?
首先,能看懂 MySQL 源碼的人物,我感覺肯定在技術上是一位大牛,能夠將 C/C++ 語言的 MySQL 源碼看懂,肯定也是一位非常有耐心的技術人,能夠耐着性子去專研。 如果能夠將Mysql源碼研究的很透徹的話,我相信出去到大廠找數據庫內核開發的崗位時,絕對是一個非常巨大的優勢。
能看懂 Mysql 的源碼,首先第一點需要對 C/C++ 語言的知識點非常的熟悉,因為 MySQL 底層幾乎都是 C/C++ 語言寫的,比如指針等。 對於 MySQL 源碼能夠看得的話,我相信在和別人談論數據庫相關的問題時,其實也會更加有專業性和深度,能夠快速的理解對方所說的數據庫問題。
同時,如果對 MySQL 源碼有着很深入了解的話,其實對於數據庫的相關配置優化等也會掌握的更好,因為你對底層原理了解的很透徹,對於自己做的每一件事情都是有理有據。每個數據庫參數是什麼含義,為什麼要這樣設置,背後都有你自己的理解和原因。這對於公司來說,也是非常需要這樣的人才。
當初我校招的時候,其實準備想投數據庫開發相關的崗位,當時其實自己也自學過 MySQL 底層的原理(不過我沒有去研究過源碼)。 MySQL 最主要的還是底層可插拔式的存儲引擎,比如 InnoDB、MYISAM等,重點是 InnoDB存儲引擎。學習看 MySQL 源碼的話,我建議可以選擇其中一個模塊開始入手。
我剛開始看 《MySQL 技術內幕:InnoDB存儲引擎》 這本書的時候,上面講解的非常多的 MySQL InnoDB 的原理。先從原理知識入手,再去看源碼會更加好一些,因為你掌握了整體的代碼邏輯方向。說實話直接上手看 MySQL 源碼,將會是很難的一件事情。我相信那些能夠看懂 MySQL 源碼的人,肯定在看源碼之前,有一定的技術知識儲備。
新同學在去研究某一門開源技術組件的源碼時,不建議直接上手去看代碼,你應該是先去整體了解一下該技術組件的整體原理和框架,源碼層則是更加細節方面的實現,你應該帶着某一個問題去看,有針對性和目的性的去看源碼,這樣你的提升才會更加的快速。
我會持續大數據、數據庫方面的內容,如果你有任何問題,也歡迎關注私信我,我會認真解答每一個問題。期待您的關注
閱讀代碼,一般都是一件繁複的工作。程序員,只要工作需要、或有足夠的時間,都能夠勝任閱讀代碼的工作,特別是數據庫這類功能具體的系統。如果軟件的功能不確定,閱讀起來確實有莫名的困難。年輕時,得到“一套”Z80彙編碼,閑來無聊,嘗試閱讀,數周過去,不得要領。直到在一個忽略了的簡單文檔的闡述上下文中,意識到代碼可能是實現“導彈”穩定飛行的側滾控制系統時,閱讀中的問題瞬間都消失了。
拜託啦,我不只能看懂你的SQL,我還可以看懂VB、C++、數據庫我也看
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/287197.html