《MysqL应用linux下MysqL 5.5.8 源码编译安装》要点:
本文介绍了MysqL应用linux下MysqL 5.5.8 源码编译安装,希望对您有用。如果有疑问,可以联系我们。
导读:本节内容:linux下MysqL 5.5.8 源码编译安装.系统:ubuntu 10.10 MysqL源码文件:MysqL-5.5.8.tar.gz 安装所需工具:cmake,gnu ma...
本节内容:
linux下MysqL 5.5.8 源码编译安装.
系统:ubuntu 10.10
MysqL源码文件:MysqL-5.5.8.tar.gz
安装所需工具:cmake,gnu make,gcc,perl,libncurses5-dev,bison(可选),chkconfig
注:
1.官方2010-11-18的源码有几处bug,在编译之前参照官方的说明,进行了手动修改.
官方说明链接:http://lists.MysqL.com/commits/126782
2.官方5.5版本参考手册:http://dev.MysqL.com/doc/
汗了一下,3392页的参考手册!
=>工具安装:
1. cmake
----没有自己编译安装cmake
----shell:~$ sudo apt-get install cmake
----版本:2.8.2
2. gnu make
----ubuntu自带
----版本:3.81
3.gcc
----ubuntu自带
----版本:4.4.5(官方文档:必须3.2以上)
4.perl
----ubuntu自带
----版本:5.10.1
5.libncurses5-dev (ncurses-devel)
----若差了这个包,在cmake的时候会报错.
----debian/ubuntu上的包名是libncurses5-dev,redhat和其他版本对应的是ncurses-devel
----shell:~$ sudo apt-get install libncurses5-dev
----报错信息
------------------www.linuxidc.com---------------
-- MysqL 5.5.8
-- could not find curses (missing: curses_library curses_include_path)
cmake error at cmake/readline.cmake:82 (message):
curses library not found. please install appropriate package,
remove cmakecache.txt and rerun cmake.on debian/ubuntu,package name is libncurses5-dev,
on redhat and derivates it is ncurses-devel.
call stack (most recent call first):
cmake/readline.cmake:126 (find_curses)
cmake/readline.cmake:216 (MysqL_use_bundled_libedit)
cmakelists.txt:256 (MysqL_check_readline)
-- configuring incomplete,errors occurred!
---------------------------------
6. bison
----shell:~$ sudo apt-get install bison
----可选.没有这个工具,在make的时候报出警告.
----警告记录:
---------------------------------
warning: bison executables not found in path
---------------------------------
7.chkconfig
----后面配置MysqL服务自启动的时候需要.
----shell:~$ sudo apt-get install chkconfig
=>MysqL安装:
1.解压源代码文件
----shell定位到源代码文件所在目录
----解压
shell:~$ tar zxvf MysqL-5.5.8.tar.gz
2.cmake操作
----shell定位到解压出的源代码文件夹目录(文件夹:MysqL-5.5.8)
----cmake执行:
---------------------------------
shell:~$ cmake -dcmake_install_prefix=/usr/local/MysqL
-dMysqL_datadir=/home/system_username/programming/MysqL/MysqLdata
-dsysconfdir=/etc
-dwith_innobase_storage_engine=1
-dwith_archive_storage_engine=1
-dwith_blackhole_storage_engine=1
-dwith_federated_storage_engine=1
-dwith_partition_storage_engine=1
-dMysqL_unix_addr=/tmp/MysqLd.sock
-dMysqL_tcp_port=3306
-denabled_local_infile=1
-dextra_charsets=all
-ddefault_charset=utf8
-ddefault_collation=utf8-general_ci
-dMysqL_user=MysqL
注:没有换行.官方文档上,cmake 命令后面加个点不懂什么意思.在这里加上命令执行不了
---------------------------------
源代码配置选项说明:
//MysqL安装的主目录,5.5.8版本默认为/usr/local/MysqL,所以可以不添加
-dcmake_install_prefix=/usr/local/MysqL
//MysqL数据保存的路径,自定义
-dMysqL_datadir=/home/system_username/MysqL/MysqLdata
//MysqL配置文件地址------the default my.cnf option file directory
-dsysconfdir=/etc
//compile storage engine xxx statically into server
/*storage engines are built as plugins. you can build a plugin as a static module (compiled into the server)
*or a dynamic module (built as a dynamic library that must be installed into the server using the install
*plugin statement or the --plugin-load option before it can be used). some plugins might not support static
*or dynamic building.
*/
-dwith_innobase_storage_engine=1
-dwith_archive_storage_engine=1
-dwith_blackhole_storage_engine=1
-dwith_federated_storage_engine=1
-dwith_partition_storage_engine=1
//unix socket file
/*
*the unix socket file path on which the server listens for socket connections. this must be an absolute path
*name. the default is /tmp/MysqL.sock
*/
-dMysqL_unix_addr=/tmp/MysqLd.sock
//数据库服务器tcp/ip连接的监听端口,默认为3306
-dMysqL_tcp_port=3306
//whether to enable local capability in the client library for load data infile
//默认为关闭,这里开启
-denabled_local_infile=1
//数据库编码设置
-dextra_charsets=all
-ddefault_charset=utf8
-ddefault_collation=utf8-general_ci
3.编译和安装
----shell定位到源代码文件夹目录
----执行:(编译用了大概20分钟)
shell:~$ make
shell:~$ make install
4.后续配置
----进入MysqL安装目录下的脚本目录
shell:~$ cd /usr/local/MysqL/scripts
----利用MysqL_install_db脚本生成新的MysqL 授权表
./MysqL_install_db --basedir=/usr/local/MysqL --datadir=/home/system_username/programming/MysqL/MysqLdata
--user=MysqL
----进入MysqL安装目录下的支持文件目录
shell:~$ cd /usr/local/MysqL/support-files
----复制MysqL配置文件
shell:~$ sudo cp my-medium.cnf /etc/my.cnf
----复制服务文件并修改
shell:~$ sudo cp MysqL.server MysqLd
----修改MysqLd
basedir=/usr/local/MysqL
datadir=/home/MysqL
mv MysqLd /etc/init.d/MysqLd
----启动服务
shell:~$ service MysqLd start
----关闭服务
shell:~$ service MysqLd stop
---------------------------------
service命令:
1. 用于管理linux系统中服务的命令
2. 作用是去/etc/init.d目录下寻找相应的服务,进行开启和关闭等操作
3. 上述操作后,MysqLd服务文件对应MysqL.server文件
---------------------------------
----添加服务到自启动项
shell:~$ sudo chkconfig --level 3 MysqLd on
----设置软连接使MysqL,MysqLdump,MysqLadmin这三个命令能在shell中直接运行
shell:~$ sudo ln -s /usr/local/MysqL/bin/MysqL /usr/bin
shell:~$ sudo ln -s /usr/local/MysqL/bin/MysqLdump /usr/bin
shell:~$ sudo ln -s /usr/local/MysqL/bin/MysqLadmin /usr/bin
---------------------------------
=>MysqL数据库中文乱码解决 :
1. 乱码分析
----从终端shell进入MysqL
shell:~$ MysqL
............
............
MysqL> show variables like '%character%'
----得到以下数据库编码信息表:
+----------------------------------- +-------------------------------------------+
| variable_name | value |
+------------------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/MysqL/share/charsets/ |
+------------------------------------ +-------------------------------------------+
可以看出character_set_database,character_set_server 的编码还是默认的latin1.
不知道为什么,之前default_charset设置成为utf8的,好像没起作用.查看官方文档
发现,character_set_database不支持配置文件(/etc/my.cnf)变量设置,
但是character_set_server 支持配置文件变量设置.
2. 解决方法
----打开配置文件
shell:~$ sudo gedit /etc/my.cnf
然后在[MysqLd]配置选项下添加
character-set-server = utf8
----然后进入MysqL
执行:
MysqL> show variables like '%character%'
结果:character_set_database,character_set_server两项都变为utf8了
----测试:
往数据库表中插入中文字段,中文就正常显示了.
注:1.用5.1版本的时候如下办法是可以解决中文编码问题的
----在配置文件[MysqLd]和[client]节下分别添加: default-character-set = utf8
2.不知到是不是手动编译的原因,在5.5.8中配置文件中用上述办法会造成数据库服务无法启动.
----错误日志如下:( datadir/username.err为错误日志文件)
----------------------------------------------------
MysqLd_safe MysqLd from pid file /home/cyberwym/programming/MysqL/MysqLdata/cyberwym.pid ended
...........
...........
[error] /usr/local/MysqL/bin/MysqLd: unknown variable 'default-character-set=utf8'
[error] aborting
----------------------------------------------------
----这样会造成pid文件(datadir/username.pid)无法更新
----在配置文件[MysqLd]和[client]节下分别去掉: default-character-set = utf8 后,数据库服务就启动正常了
CentOS 6.3下源码编译安装MysqL 5.6
CentOS 6.5编译安装Percona 5.6.15(步骤)
centos6.4编译安装MysqL5.5及Sphinx引擎的办法详解
MysqL编译安装及多实例安装的办法分享
fedroa中编译安装MysqL5.5的实例参考
安装MysqL5.5时只编译客户端
新编译的MysqL无法通过service启动的解决办法
查看已安装的MysqL编译参数的办法
编程之家PHP培训学院每天发布《MysqL应用linux下MysqL 5.5.8 源码编译安装》等实战技能,PHP、MysqL、LINUX、APP、JS,CSS全面培养人才。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250