首页 > 代码库 > mysql编译安装

mysql编译安装

安装mysql5.6
1、解压
tar -zxvf mysql-5.6.23.tar.gz

2、打补丁,下载补丁mysql-openssl.patch到mysql压缩包同一路径
cd mysql-5.6.23
patch -p1 < ../mysql-openssl.patch

3、编译安装,安装前确保已安装ncurses,ncurses-devel,gcc,gcc-c++,“Development tools”组,lrzsz,cmake
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=bundled -DWITH_ZLIB=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1
make && make install

4、后续配置
4.1、创建mysql组和mysql用户
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql

4.2、修改my.cnf文件
## Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients
[client]
#password   = your_password
port        = 3306
socket      = /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
datadir=/usr/local/mysql/var
port        = 3306
socket      = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
lower_case_table_names=1

# Don‘t listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking

# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin

# binary logging format - mixed recommended
binlog_format=mixed

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id   = 1

#loose-innodb-trx=0
#loose-innodb-locks=0
#loose-innodb-lock-waits=0
#loose-innodb-cmp=0
#loose-innodb-cmp-per-index=0
#loose-innodb-cmp-per-index-reset=0
#loose-innodb-cmp-reset=0
#loose-innodb-cmpmem=0
#loose-innodb-cmpmem-reset=0
#loose-innodb-buffer-page=0
#loose-innodb-buffer-page-lru=0
#loose-innodb-buffer-pool-stats=0
#loose-innodb-metrics=0
#loose-innodb-ft-default-stopword=0
#loose-innodb-ft-inserted=0
#loose-innodb-ft-deleted=0
#loose-innodb-ft-being-deleted=0
#loose-innodb-ft-config=0
#loose-innodb-ft-index-cache=0
#loose-innodb-ft-index-table=0
#loose-innodb-sys-tables=0
#loose-innodb-sys-tablestats=0
#loose-innodb-sys-indexes=0
#loose-innodb-sys-columns=0
#loose-innodb-sys-fields=0
#loose-innodb-sys-foreign=0
#loose-innodb-sys-foreign-cols=0

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/data
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


【localhost】#sed -i ‘s:#innodb:innodb:g‘ /etc/my.cnf
              sed -i ‘s:/usr/local/mysql/data:/usr/local/mysql/var:g‘ /etc/my.cnf

4.3、初始化数据库
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql

chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql/.

cp support-files/mysql.server /etc/init.d/mysql

chmod 755 /etc/init.d/mysql

cat > /etc/ld.so.conf.d/mysql.conf<<EOF
    /usr/local/mysql/lib
    /usr/local/lib
EOF


4.4快捷方式,软连接
ln -sf /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -sf /usr/local/mysql/include/mysql /usr/include/mysql

5、安全设置
5.1、启动mysql
 /etc/init.d/mysql start

 ln -sf /usr/local/mysql/bin/mysql /usr/bin/mysql
 ln -sf /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
 ln -sf /usr/local/mysql/bin/myisamchk /usr/bin/myisamchk
 ln -sf /usr/local/mysql/bin/mysqld_safe /usr/bin/mysqld_safe

5.2、设置mysql root密码
 /usr/local/mysql/bin/mysqladmin -u root password 123456

5.3、创建检查mysql安全脚本
touch mysql_sec_script.txt
vim mysql_sec_script.txt
输入以下文本
use mysql;
update user set password=password(‘123456‘) where user=‘root‘;
delete from user where not (user=‘root‘) ;
delete from user where user=‘root‘ and password=‘‘;
drop database test;
DROP USER ‘‘@‘%‘;
flush privileges;

/usr/local/mysql/bin/mysql -u root -p123456 -h localhost < mysql_sec_script.txt

rm -f mysql_sec_script.txt

echo -e "\nexpire_logs_days = 10" >> /etc/my.cnf
sed -i ‘/skip-external-locking/a\max_connections = 1000‘ /etc/my.cnf

6、Mysql附加
6.1、启动、重启、停止
启动mysql
/etc/init.d/mysql start
重启mysql
/etc/init.d/mysql restart
停止mysql
/etc/init.d/mysql stop

6.2、开机启动
vim /etc/rc.local
在最后添加以下行
/etc/init.d/mysql start

7.mysql远程连接
mysql -uroot -p123456
>use mysql;
>GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘root‘ WITH GRANT OPTION;
>flush privileges;
>update user set password=PASSWORD("123456") where user=‘root‘;                        #1045错误
>quit
service mysql restart


8.LINUX下的MYSQL默认是要区分表名大小写的。
  让MYSQL不区分表名大小写的方法其实很简单:
  1.用ROOT登录,修改/etc/my.cnf
  2.在[mysqld]下加入一行:lower_case_table_names=1
  3.重新启动数据库即可


本文出自 “On-load” 博客,请务必保留此出处http://paxpeng.blog.51cto.com/4396540/1886604

mysql编译安装