mysql5.6.39源码编译安装、配置!

一:mysql的源码编译安装
①yum install -y gcc gcc-c++ make openssl openssl-devel cmake ncurses ncurses-devel bison bison-devel libaio libaio-devel
②#创建mysql用户:useradd -M -s /sbin/nologin mysql
cd /usr/local/src
wget 'https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.39.tar.gz'
tar -zxvf mysql-5.6.39.tar.gz
cd mysql-5.6.39

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_DEBUG=0 \
-DWITH_SSL=yes \
-DENABLED_LOCAL_INFILE=1\
-DWITH_READLINE=1\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_ARCHIVE_STORAGE_ENGINE=1\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
mysql5.6.39源码编译安装、配置!

make -j 2 && make install
注:-j 用来指定CPU核心数,可加快编译速度,不加也可以
【编译有错误后,执行make clean ,然后要删除 rm CMakeCache.txt ,才能重新编译】
③#mysql.server脚本用来管理mysql服务器的启动和关闭
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
④检查mysql是否安装成功: /usr/local/mysql/bin/mysql --version
mysql5.6.39源码编译安装、配置!

二:Mysql的数据初始化及管理:
①vim /etc/my.cnf 将以下内容复制到文件中
[mysqld]
bind-address=127.0.0.1
port=3306
datadir=/data/mysql
socket=/tmp/mysql.sock
user=mysql
skip-name-resolve
slow_query_log=on
long_query_time=1
slow_query_log_file=/data/mysql/mysql-slow.log
expire_logs_days=2
innodb-file-per-table=1
innodb_flush_log_at_trx_commit = 2
log_warnings = 1
max_allowed_packet = 512M
connect_timeout = 60
net_read_timeout = 120

[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid
②mysql配置讲解
bind-address=127.0.0.1
port=3306 #监听ip和端口
datadir=/data/mysql #数据目录
socket=/tmp/mysql.sock #指定socket的路径,默认就是/tmp/mysql.sock
innodb-file-per-table=1 #独立表空间
innodb_flush_log_at_trx_commit = 2 #配置为1表示数据写入后马上写到磁盘,系统压力大。配置为2的话,会每秒执行一次写盘的操作,压力较小
log_warnings = 1 #警告信息写入日志
③Mysql启动前需要进行数据的初始化
mkdir -pv /data/mysql
chown mysql:mysql /data/mysql
yum install -y perl-Module-Install #数据初始化脚本依赖于perl,所以先安装一个perl
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/ #Mysql初始化数据目录

④初始化完启动mysql服务器
nohup /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf & #手动启动
mysqladmin -uroot -p -S /data/mysql/mysql.sock shutdown #手动关闭
/etc/init.d/mysqld start #用提供的脚本启动
/etc/init.d/mysqld stop #用提供的脚本关闭
⑤使用systemctl管理:vim /usr/lib/systemd/system/mysqld.service 复制以下内容:
[Unit]
Description=mysqld
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
ExecStop=/etc/init.d/mysqld stop

[Install]
WantedBy=multi-user.target
⑥管理mysql
systemctl enable mysqld #开机启动mysqld
systemctl start mysqld #启动mysqld
ps auxf|grep mysql|grep -v grep #有进程在
netstat -tulnp|grep mysql #有端口监听
三:Mysql客户端使用和远程登录说明
① mysql服务器有提供客户端工具:
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/ #mysql命令经常使用
mysql -uroot #默认连接到localhost,密码为空
② mysql默认的密码是空的,但只允许本机登录
mysql -uroot -h 127.0.0.1 #为什么无需密码就能登录
mysql> select user,password,host from mysql.user;
mysql5.6.39源码编译安装、配置!

③ 本地登录mysql安全加固
delete from mysql.user where user=''; #删除空用户
update mysql.user set password=PASSWORD('password') where user='root'; #设置密码
select user,password,host from mysql.user; #密码加密
flush privileges; #刷新权限
④ 登录有密码的mysql服务器:mysql -uroot -p -h 127.0.0.1
⑤给内网ip、外网ip授权
mysql -uroot -h x.x.x.x #默认使用内网ip无法登录,因为没在白名单内
GRANT ALL PRIVILEGES ON . TO '用户名'@'内网IP或公网IP' IDENTIFIED BY '密码' WITH GRANT OPTION;
flush privileges;
内网服务器登录: mysql -uroot -p -h xxx.xxx.xx
四:Mysql的两个重要日志
①mysql重要的两个日志文件
错误日志 #当mysql启动有问题的时候,我们需要借助这个日志进行排查
慢日志 #当业务出现慢或者超时的时候,我们需要观查mysql的慢日志是否过多
mysql的错误日志:log-error=/data/mysql/mysqld.log
观察mysql错误日志:tail -f /data/mysql/mysqld.log
②mysql慢日志说明:
slow_query_log=on
long_query_time=1
slow_query_log_file=/data/mysql/mysql-slow.log

猜你喜欢

转载自blog.51cto.com/python20101030/2346466