MySQL-安装数据库(Linux)

1. 安装前环境配置

1)关闭防火墙

-- service版本
service iptables stop
chkconfig off iptables

-- systemctl版本
systemctl stop firewalld.service
systemctl disable firewalld.service



2)关闭selinux

# 禁用selinux,配置/etc/sysconfig/selinux,修改SELINUX项为disabled
if [[ "$(getenforce)" = "Enforcing" ]]; then
    cp /etc/selinux/config{,_$(date +%Y%m%d)} && setenforce 0 && sed -i  "/^(SELINUX=.*)/c\#/1\nSELINUX=disable" /etc/selinux/config
fi


3)配置操作系统句柄参数限制

cat > /etc/security/limits.d/99-mysql.conf <<-EOF
mysql   soft    nproc   65536
mysql   hard    nproc   65536
mysql   soft    nofile  65536
mysql   hard    nofile  65536
EOF


4)创建mysql系统用户

groupadd  mysql
useradd -r -g mysql -c "Mysql server" -s /sbin/nologin -M mysql


2. 软件安装

2.1 安装系统依赖包

rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" gcc gcc-c++ make cmake ncurses-devel libtool zlib-devel bison libaio

yum -y install  gcc gcc-c++ make cmake ncurses-devel libtool zlib-devel bison libaio


2.2 安装MySQL软件

1)rpm包安装

rpm –ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

# lib路径:/usr/lib64/mysql
# 默认数据目录:/var/lib/mysql/
# 相关命令   /usr/bin(mysqladmin mysqldump等命令)
# 配置文件   /usr/share/mysql(mysql.server命令及配置文件)

2)二进制分发包安装

tar xf mysql-advanced-5.6.14-linux-glibc2.5-i686.tar.gz -C /usr/local/mysql
cd /usr/local/mysql
mv mysql-advanced-5.6.14-linux-glibc2.5-i686 mysql3308
cd mysql3308
mkdir -p {logs,conf}
mkdir -p /mydata/mysql3308
cp -p support-files/my-medium.cnf conf/my.cnf
cp -p support-files/mysql.server conf/mysqld3308
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysqldata/
chmod -R 750 /usr/local/mysql
chmod -R 700 /mydata/mysql3308

3) 源码编译安装方式

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql3308 \
-DMYSQL_DATADIR=/mydata/mysql3308 \
-DSYSCONFDIR=/usr/local/mysql3308/conf \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1  \
-DMYSQL_UNIX_ADDR=/usr/local/mysql3308/logs/mysql3308.sock \
-DMYSQL_TCP_PORT=3308 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci


make --jobs $(grep -ci processor /proc/cpuinfo) && make --jobs $(grep -ci processor /proc/cpuinfo) test
make --jobs $(grep -ci processor /proc/cpuinfo) install


3. 初始化

-- 版本低于5.6
# cd /usr/loca/mysql3308/
# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql3308 --datadir=/mydata/mysql3308
-- mysql 5.7 ( --initialize表示默认生成密码, --initialize-insecure 表示不生成密码 )
# ${MYSQL_HOME}/bin/mysqld --user=mysql --basedir=${MYSQL_HOME} --datadir==/mydata/mysql3308 --initialize


4. 启动服务

1) 参数文件(my.cnf/my.ini)配置

-- 示例

[client]
default-character-set = utf8
socket = /usr/local/mysql3308/logs/mysql3308.sock

[mysqld]
basedir                     = /usr/local/mysql3308
datadir                     = /mydata/mysql3308
log-error                   = /usr/local/mysql3308/logs/mysql3308.error
pid-file                    = /usr/local/mysql3308/logs/mysqld3308.pid
socket                      = /usr/local/mysql3308/logs/mysql3308.sock
port                        = 3308
default-storage-engine      = INNODB
character-set-server        = utf8
collation-server            = utf8_general_ci
binlog_format               = ROW
log_bin                     = /mydata/binlogs/b3308
expire_logs_days            = 3
max_binlog_size             = 100m
max_connect_errors          = 5
max_connections             = 1000
max_user_connections        = 100
wait_timeout                = 100
open_files_limit            = 1024
local-infile                = 0
skip_name_resolve           = ON
server_id                   = 3308001
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_load_at_startup = 1
log_timestamps=SYSTEM

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

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

[mysqlhotcopy]
interactive-timeout
 

2) 配置服务

-- service 版本
ln -s /usr/local/mysql/mysql3308/conf/mysqld3308 /etc/rc.d/init.d/mysqld3308
chmod 755 /etc/rc.d/init.d/mysqld3308
cd /etc/rc.d/init.d/
chkconfig --add mysqld3308 
chkconfig --list |grep mysqld

-- systemctl 版本
ln -s /usr/local/mysql/mysql3308/conf/my.cnf /et/my.cnf
vi /usr/lib/systemd/system/mysql3308.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/ups/app/mysql/mysql3308/logs/mysqld3308.pid
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/ups/app/mysql/mysql3308/bin/mysqld --daemonize --pid-file=/ups/app/mysql/mysql3308/logs/mysqld3308.pid $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false


3) 启动服务

# 方法1
/usr/loca/mysql/mysql3308/bin/mysqld_safe --defaults-file=/etc/my.cnf

# 方法2
systemctl start mysql3308
or
service mysql3308 start


5. 服务启动后配置

1) 修改root密码

mysql> use mysql;
mysql> update user set password=password('root') where user='root';
mysql> delete from user where user!='root' or host!='localhost';
mysql> flush privileges;


2)用户授权

# 远程访问授权
mysql> grant all privileges on *.* to 'root'@'192.168.10.%' IDENTIFIED BY 'root' with grant option;
mysql> grant all privileges on *.* to 'root'@'node' IDENTIFIED BY 'root' with grant option;
mysql> FLUSH PRIVILEGES;

猜你喜欢

转载自www.cnblogs.com/wandering-mind/p/12498376.html