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,在编译之前参照官方的说明,进

系统: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 后,数据库服务就启动正常了

上一篇 SQL Server2012数据库备份和还原的教程
下一篇 Windows下SQL Serever 2012彻底卸载删除教程