LINUX环境下MYSQL5.5.18源码安装

p_w_picpath

 

Mysql5.5.*之后必须用cmake进行编译mysql

Cmake 安装包能够官网下载http://www.cmake.orglinux

1、安装cmake:sql

1)解压cmake:#tar -zvxf cmake-version.tar.gzshell

2)配置编译:数据库

进入cmake解压目录bootstrap

# ./bootstrap; make; make install //调用cmake 编译脚本bootstrap 并编译安装app

2、安装MYSQLide

1)解压mysql-5.5.18.tar.gz:#tar -zvxf mysql-5.5.18.tar.gz工具

建立数据目录(mysql5.5默认已经没有data目录了)测试

mkdir /server/mysql/ -p //创建MYSQL安装目录,-p选项是连续创建不存在

mkdir /server/mysql/data -p //创建MYSQL数据目录,的目录。

注:通常都将安装在/usr/local/目录下,方便管理,可将/server用/usr/local/替换

2)配置编译

#cd mysql-5.5.18

#cmake . //这个方法,安装路径默认

#cmake . \

-DCMAKE_INSTALL_PREFIX:PATH=/server/mysql \

-DMYSQL_DATADIR:PATH=/server/mysql/data _install_db --user=mysql --i

(指定了DATA路径之后须要在初始化数据库的时候加上—datadir参数:

scripts/mysql_install_db --user=mysql –-datadir=/server/mysql/data,不然数据库

没法启动)

关于安装编译树,可根据具体状况进行增长具体须要的编译选项

进入MYSQL解压目录读取README文档可查看全部与安装相关的选项

cmake . -LAH --查看详细编译选项。

注意一:第2步的安装过程当中可能有问题,例如:CMake Error: The source directory “*” does not appear to contain CMakeLists.txt.Specify –help for usage, or press the help button on the CMake GUI.

是安装版本错了,好比在 http://dev.mysql.com/downloads/mysql/ 下载页面时,咱们要选择的是 MySQL Community Server 下的 Source Code,如图:

clip_p_w_picpath001

而后在显示的列表中选择 “Generic Linux mysql-5.5.x.tar.gz” 那个版本的×××。

注意二:Ubuntu 10.10 下安装mysql所需工具:cmake, GNU make, gcc, Perl, libncurses5-dev, bison(可选), chkconfig。例如:缺乏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.注意,在安装好libncurses5-dev以后,从新cmake以前,要将生成的CMakeCache.txt文件删除,不然继续报错。

3)、安装:

#make && make install --编译并安装MYSQL

注意:可将如下操做命令编辑成shell脚本一次执行完成全部操做。

#groupadd mysql --增长用户组

#useradd -r -g mysql mysql –增长用户

#cd /server/mysql –进入MYSQL安装目录

#chown -R mysql:mysql . –更改MYSQL目录下全部文件目录属主于MYSQL组

MYSQL用户

#scripts/mysql_install_db --user=mysql --用mysql用户初始化数据库(注意前面所讲,要加上-datadir=/server/mysql/data选项,不然没法启动)

#chown -R root . 更改MYSQL目录下全部文件目录属主于ROOT 用户

#chown -R mysql data 更改MYSQL目录下数据文件目录属主于mysql 用户

#cp ./support-files/ my-medium.cnf /etc/my.cnf –拷MYSQL的配置文件到/etc下

cp support-files/mysql.server /etc/rc.d/init.d/mysql --拷贝/server/mysql/support-

files /mysql.server 文件到 /etc/rc.d/init.d/目录下并重名为mysql 这步的做用是把

MYSQL做成服务

service mysql start 启用服务

/server/mysql/bin/mysql –uroot –p 登陆进入MYSQL

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'longmaster' WITH

GRANT OPTION; 增长root用户,并设定密码.

flush privileges; 刷新授权使用新增root用户生效

编辑 /etc/my.cnf文档 在[mysqld]段加入 skip-name-resolve -- 跳过主机名字解析。 oservice mysql restart

另外一种可参考的后续配置及问题解决:

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

相关文章
相关标签/搜索