jin5011 发表于 2018-9-30 06:01:23

LINUX环境下MYSQL5.5.18源码安装


  Mysql5.5.*以后必须用cmake进行编译
  Cmake 安装包可以官网下载http://www.cmake.org
  一、安装cmake:
  1)解压cmake:#tar -zvxf cmake-version.tar.gz
  2)配置编译:
  进入cmake解压目录
  # ./bootstrap; make; make install //调用cmake 编译脚本bootstrap 并编译安装
  二、安装MYSQL
  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,如图:

  然后在显示的列表中选择 “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'@'%'>  GRANT OPTION; 增加root用户,并设定密码.
  flush privileges; 刷新受权使用新增root用户生效
  编辑 /etc/my.cnf文档 在段加入 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
  然后在配置选项下添加
  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
  ...........
  ...........
   /usr/local/mysql/bin/mysqld: unknown variable 'default-character-set=utf8'
   Aborting
  ----------------------------------------------------
  ----这样会造成pid文件(datadir/username.pid)无法更新
  ----在配置文件〔mysqld]和〔client]节下分别去掉: default-character-set = utf8 后,数据库服务就启动正常了

页: [1]
查看完整版本: LINUX环境下MYSQL5.5.18源码安装