Linux MySQL5.5源码安装

环境:CentOS7,MySQL5.5

1.MySQL5.5源码下载

  Oracle的网站打开较慢,http://mirrors.sohu.com/mysql/这里提供了MySQL的镜像。一般的,Linux的程序安装有两种方式:A利用RPM,YUM等工具 B手动安装。其中手动安装又有两种方式,一种是直接下载已经编译好的二进制文件,另一种是下载源码手动编译。我们这里尝试下载源码手动编译的方式。

  如何区分下载文件列表的文件是已编译好的二进制文件,还是源码文件:

A.文件大小。由于从源码编译为二进制文件,会利用到一些静态链库。因此一般的源码文件比编译好二进制文件要小。

B.文件名。因为不同的平台编译出的二进制文件不一样,因此一般的编译好的二进制文件的包名里会明确写出该包适用的平台。例如mysql-5.5.40-linux2.6-x86_64.tar.gz。而源码一般不会这样写。

C.将下载的文件解包后,如果有bin文件夹,一般可以说明该文件包是编译好的二进制文件。

 

2.编译源码

  • MySQL从5.5开始使用cmake 编译工具。首先安装cmake:yum install cmake
  • 创建一个MySQL用户   
  • 1 #groupadd mysql 
    2 #useradd -g mysql mysql 
  • 解包:在/usr/local/src下将tarball解开
  • 1 #tar -zxvf mysql-5.5.14.tar.gz 
  • 构建Makefile文件
  •  1 #cd mysql-5.5.14/ 
     2 #cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5  3 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock  4 -DDEFAULT_CHARSET=utf8  5 -DDEFAULT_COLLATION=utf8_general_ci  6 -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk  7 -DWITH_MYISAM_STORAGE_ENGINE=1  8 -DWITH_INNOBASE_STORAGE_ENGINE=1  9 -DWITH_MEMORY_STORAGE_ENGINE=1 10 -DWITH_READLINE=1 11 -DENABLED_LOCAL_INFILE=1 12 -DMYSQL_DATADIR=/var/mysql/data 13 -DMYSQL_USER=mysql
    14 -DSYSCONFDIR=/etc # mysql配置文件 my.cnf的存放地址,默认为/etc下 
    15 -DMYSQL_TCP_PORT=3306 # 数据库服务器监听端口,默认为3306  
    16 -DWITH_SSL=yes # 支持 SSL 
    17 -DMYSQL_USER=mysql # 默认为mysql 
    18 
    19 //下面3个是数据库编码设置 
    20 -DEXTRA_CHARSETS=all # 安装所有扩展字符集,默认为all 
    21 -DDEFAULT_CHARSET=utf8 # 使用 utf8 字符 
    22 -DDEFAULT_COLLATION=utf8_general_ci # 校验字符 
    23 
    24 //下面5个是数据库存储引擎设在 
    25 -DWITH_MYISAM_STORAGE_ENGINE=1 # 安装 myisam 存储引擎 
    26 -DWITH_INNOBASE_STORAGE_ENGINE=1 # 安装 innodb 存储引擎 
    27 -DWITH_ARCHIVE_STORAGE_ENGINE=1 # 安装 archive 存储引擎 
    28 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 安装 blackhole 存储引擎 
    29 -DWITH_PARTITION_STORAGE_ENGINE=1 # 安装数据库分区 
    //在这个过程中,可能会因为缺少某些包而报错,参照报错信息用YUM安装相关的包,然后删除Makefile.txt,重新构建。这个步骤在错误信息中有详细说明
  • 执行安装

  • 1 #make    
    2 #make install

3.创建数据库

  • 设置配置文件
  •  1  #cp support-files/my-medium.ini  /etc/my.cnf 
     2  //MySQL提供了my-small.ini、my-medium.ini、my-large.ini、my-huge.ini几个文件,根据实际环境选择合适的文件作为参考
     3 
     4 // Uncomment the following if you are using InnoDB tables
     5  #innodb_data_home_dir = /var/mysql5.5/data
     6  #innodb_data_file_path = ibdata1:10M:autoextend
     7  #innodb_log_group_home_dir = /var/mysql5.5/data
     8 
     9  # default-storage-engine=InnoDB 
    10  # user = mysql

    其他的配置根据实际情况调整,在重启MySQL后生效

  • 创建数据库

  • 1 # ./scripts/mysql_install_db --basedir=/usr/local/mysql5.5 --datadir=/var/mysql5.5/data 
    2 # export PATH=/usr/local/mysql5.5/bin:$PATH
  • 启动/关闭数据库

    1 # ./bin/mysqld_safe &

    //说明
    A.数据库在启动的时候,会打出这样一个信息:mysqld_safe Logging to ‘/usr/local/mysql5.5/data/localhost.err
    如果数据库启动不成功,可以参照这个Log的信息查找具体原因,例如:
    /usr/local/mysql5.5/bin/mysqld: File ‘./mysql-bin.000004‘ not found (Errcode: 13)
    这个问题是由文件权限引起的,我们在安装过程中由于在root和mysql及其它用户间切来切去,导致mysql用户没有正确的权限访问文件解决方法
    #chown -R mysql:mysql /usr/local/mysql5.5 //注意-R的参数
    B.即使数据库正常启动,A中所说的Log中的某些警告信息同样具有参考价值
    2 # ./bin/mysqladmin -u root -p shutdown    
  • 连接数据库

  • 1 #mysql  -h localhost -u root -p
  • 发生的一些错误

        1. ‘Access denied for user ‘root‘@‘localhost‘ (using password: YES)‘:

        发生原因,没有正确设置root的密码,如果直接连接数据库 mysql -u root,并执行select password from user where user=‘root‘,

        会发现查到的password都为空。在这种情况下,如果不重新设置password,那么可以执行#mysql -h localhost -u root -p,然后在需要输入密码的时候,直接回车就可以Login了,因为root的密码本来就为空。当然,最好还是重新设置一下root密码。

         

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。