mysql安装
mysql目前有三个系列,5.0系列,5.5系列,7.0系列(cluster),每个系列版本后缀的含义,一般生产环境选择GA版,beta为测试版本
mysql里面的support-files/mysql.server脚本里面的basedir,datadir是服务端启动时需要指定的,而/etc/my.cnf是客户端接进来操作时需要查看的参数,里面也有basedir,datadir
mysql5.5后源码安装需要cmake
先安装yum -y install gcc gcc-c++
下载cmake
cd /usr/local/src
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz
tar -xf cmake-2.8.12.1.tar.gz
cd cmake-2.8.12.1
./configure
make
make install
查看cmake的版本
cmake --version
以下为单实例安装mysql
源码安装mysql要下载以下图片显示的,即进入mysql官网,点击mysql connunity(社区版),然后选择source code,下载(mysql-5.6.43.tar.gz),这种方式是完全源码编译安装
安装源码编译mysql需要的库跟软件支持,其中gcc gcc-c++在安装nginx时已安装过
yum -y install cmake make gcc gcc-c++ ncurses-devel autoconf
进入存放软件压缩包的目录
cd /usr/local/src
不显示过程的解压文件到当前目录下,并保留原有压缩包
tar xf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
进入解压缩出来的软件目录
cd mysql-5.7.23-linux-glibc2.12-x86_64
创建软件安装目录及mysql数据库存放位置,并把目录权限设置为mysql用户
mkdir -p /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql
cmake编译安装mysql,指定安装目录,指定端口,指定数据库存放位置
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306
编译
make
安装
make install
初始化前如果需要制定初始化数据库的各种参数(可能是优化参数)那么就得去support-files里面把my-default.cnf复制到安装目录下,然后初始化数据库时指定配置文件
安装完初始化数据库,并指定配置文件
./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
还可以把my.cnf做个软链接链接到/etc/my.cnf
ln -s /usr/local/mysql/my.cnf /etc/my.cnf
以上若是初始化数据库时不指定配置文件,那么会生成一个默认的配置文件my.cnf
修改my.cnf参数在mysqld下面加入
basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket = /usr/local/mysql/mysql.sock log-error = /usr/local/mysql/error.log pid-file = /usr/local/mysql/mysql.pid user = mysql tmpdir = /tmp
启动mysql
/usr/local/mysql/support-files/mysql.service start
进入数据库管理界面
/usr/local/mysql/bin/mysql
编辑执行路径
vim /etc/profile
末尾加入:export PATH=$PATH:/usr/local/mysql/bin
更新路径
. /etc/profile
初始进入没有密码
复制启动脚本到etc下面,即可使用service与systemctl命令开启,关闭,重启mysql
cp /usr/local/mysql/support-files/mysql.service /etc/init.d/mysqld
chmod /etc/init.d/mysqld
开机启动mysql
chkconfig --add mysqld
查看开机启动服务
chkconfig --list
还有一种方式是二进制安装,linux-generic,包名是(mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz),这样就直接解压,相当于源码安装执行了cmake,make,make install之后的状态,然后执行suport-file下面的初始化脚本即可。
先下载二进制包,解压包,并把包移动更名为/usr/local/mysql
mv mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local/mysql
创建用户组,用户,创建目录/data为存放数据库数据目录,错误日志目录,pid目录
groupadd mysql
useradd -M
-
r
-
g mysql mysql
usermod
-
s
/
sbin
/
nologin mysql
mkdir /data/mysql
mkdir /data/mysql/data
mkdir /data/mysql/inndb_data
touch /data/mysql/mysqld.log
touch /data/mysql/mysqld.pid
chown -R mysql.mysql /data
创建socket文件
touch /tmp/mysql.sock
chown mysql.mysql /tmp/mysql.sock
创建配置文件/etc/my.cnf
[mysqld]
pid-file=/data/mysql/mysqld.pid
character-set-server=utf8
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
default-storage-engine=InnoDB
default-time-zone='+8:00'
explicit_defaults_for_timestamp=true
max_connections = 5000
wait_timeout = 1200
innodb_support_xa = ON
innodb_data_home_dir=/data/mysql/inndb_data
innodb_data_file_path=ibdata1:2048M:autoextend
innodb_file_per_table=1
innodb_buffer_pool_size = 512M
innodb_buffer_pool_instances=2
innodb_purge_threads=2
innodb_support_xa=FALSE
innodb_flush_method = O_DIRECT
innodb_io_capacity=1000
innodb_read_io_threads=2
innodb_write_io_threads=2
innodb_change_buffering=all
innodb_stats_on_metadata=off
innodb_strict_mode=1
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit=2
innodb_autoinc_lock_mode=2
innodb_thread_concurrency=0
max_tmp_tables=100
query_cache_size=0
query_cache_type=0
max_prepared_stmt_count=1048576
sort_buffer_size=32769
server_id = 2800
log-bin=/data/mysql/bin-file.log
binlog_cache_size = 1M
binlog_format=MIXED
max_binlog_size=256M
max_binlog_cache_size=50M
expire_logs_days = 91
sync_binlog=2
[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid
[client]
port=3306
socket=/tmp/mysql.sock
初始化
cd /usr/local/mysql/bin
.
/
mysqld
-
-
defaults
-
file
=
/
etc
/
my.cnf
-
-
initialize
-
-
user
=
mysql
初始化完会有默认密码,记下
设置开机启动
cp ..
/
support
-
files
/
mysql.server
/
etc
/
rc.d
/
init.d
/
mysqld
chmod
+
x
/
etc
/
rc.d
/
init.d
/
mysqld
chkconfig
-
-
add mysqld
启动数据库
service mysqld start
配置环境变量
/etc/profile
export PATH
=
$PATH:
/
opt
/
mysql
/
bin
source /etc/profile
登录数据库
mysql -uroot -p
修改数据库密码
mysql> alter user
"root"
@
"localhost"
identified by
"新密码"
;
刷新权限
mysql> flush privileges;
添加远程登录用户
mysql> grant
all
privileges on
*
.
*
to
"用户名"
@
"IP地址"
identified by
"密码"
with grant option;
开启远程用户所有IP都能访问,IP地址改成%
以下是源码安装mysql多实例
多实例是指在同一台服务器上开启多个mysql服务,以端口号作为区分,多实例是逻辑上独立,但是底层的硬件资源还是公用的,以此来解决一台服务器运行一个实例有可能会造成浪费资源的情况,多实例由于是公用底层硬件资源,所以当某个实例的并发数增多时,会抢占资源,造成其他实例的响应缓慢。
多实例可以影射生活事件,比如多人同居,三房一厅,逻辑上独立,指三人分房睡觉,互不干扰,而硬件资源类似客厅,厨房,厕所,当有一个人占有厨房或者厕所,那么其他人就不能用,当然mysql多实例没有那么夸张到不能应用的情况,但是影响肯定会有的
多实例安装基本上与但实例差不多,先源码编译安装,预备创建多少个实例就创建多少个目录,这个目录不仅是数据库数据存放目录,最好还把启动脚本跟配置文件存放在里面,
然后复制mysql启动脚本跟my.cnf到相应实例的目录下,并修改配置文件的启动脚本,数据存放目录等参数
然后执行数据库初始化脚本
./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql --default-file=/data/3306/my.cnf
启动数据库
/data/3306/mysqld start -S /data/3306/data/mysql.sock