您的位置:

mysql源码配置(源码安装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++、数据库我也看