源码安装mysql
1.源码包比二进制包小,因为没有生成
2.源码包解压后文件较多
3.systemctl 有时候启动不成功也不会报错
4.生成之后打包该目录,即为二进制包
5./etc/init.d/mysqld start 如果有报错的话,会输出
6.什么启动方式,就用什么关闭方式
1.rz
2.安装依赖
[root@db02 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl opsssl-devel
3.解压mysql安装包
[root@db02 ~]# tar xf mysql-5.6.46.tar.gz
4.生成
[root@db02 ~]# cd mysql-5.6.46/
[root@db02 mysql-5.6.46]#
#程序存放位置
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.46
#数据存放位置
-DMYSQL_DATADIR=/usr/local/mysql-5.6.46/data
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.46/tmp/mysql.sock
#使用utf8字符集
-DDEFAULT_CHARSET=utf8
#校验规则
-DDEFAULT_COLLATION=utf8_general_ci
#使用其他额外的字符集
-DWITH_EXTRA_CHARSETS=all
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled
#启用SSL库支持(安全套接层)
-DWITH_SSL=system
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1
# mysql5.6支持了google的c++mock框架了,允许下载,否则会安装报错。
-DENABLE_DOWNLOADS=1
#禁用debug(默认为禁用)
-DWITH_DEBUG=0
模板
[root@db02 mysql-5.6.46]# cd mysql-5.6.46/ && cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.46
-DMYSQL_DATADIR=/usr/local/mysql-5.6.46/data
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.46/tmp/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITH_ZLIB=bundled
-DWITH_SSL=system
-DENABLED_LOCAL_INFILE=1
-DWITH_EMBEDDED_SERVER=1
-DENABLE_DOWNLOADS=1
-DWITH_DEBUG=0
#编译
[root@db02 mysql-5.6.46]# make
#安装
[root@db02 mysql-5.6.46]# make install
#做软链接
[root@db02 mysql-5.6.46]# ln -s /usr/local/mysql-5.6.46/ /usr/local/mysql
#创建用户
[root@db02 mysql-5.6.46]# useradd mysql -s /sbin/nologin -M
#拷贝配置文件
[root@db02 mysql-5.6.46]# cp support-files/my-default.cnf /etc/my.cnf
#拷贝mysql启动脚本
[root@db02 mysql-5.6.46]# cp support-files/mysql.server /etc/init.d/mysqld
#进入MySQL初始化脚本目录
[root@db02 mysql-5.6.46]# cd /usr/local/mysql/scripts/
#初始化MySQL
[root@db02 mysql-5.6.46]# ./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql
#授权
[root@db02 mysql-5.6.46]# chown -R mysql.mysql /usr/local/mysql/
#给启动脚本授权700
[root@db02 mysql-5.6.46]# chmod 700 /etc/init.d/mysqld
#systemd管理mysql启动
[root@db02 mysql-5.6.46]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://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
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#设置开机自启动C6
[root@db02 mysql-5.6.46]# chkconfig mysqld on
#设置开机自启动C7
[root@db02 mysql-5.6.46]# systemctl enable mysqld
#启动MySQLC6
[root@db02 mysql-5.6.46]# /etc/init.d/mysqld start
#启动MySQLC7
[root@db02 mysql-5.6.46]# systemctl start mysqld
#创建tmp目录(5.6.46版本不会自动创建tmp目录)
[root@db02 mysql-5.6.46]# mkdir /usr/local/mysql-5.6.46/tmp
#添加环境变量
[root@db02 ~]# echo 'PATH=/usr/local/mysql/bin/:$PATH' >>/etc/profile/
#个人推荐
[root@db02 ~]# echo 'PATH=/usr/local/mysql/bin/:$PATH' >/etc/profile.d/mysql.sh
[root@db02 ~]# source /etc/profile.d/mysql.sh
#设置MySQL密码
[root@db02 ~]# mysqladmin -uroot password 'oldboy123'
#MySQL登陆
[root@db02 ~]# mysql -uuser -ppassword -Ssocket -hhost
#MySQL基本操作及基本优化
#查看库
mysql> show databases;
#删库
mysql> drop database test;
#使用库
mysql> use mysql
#查看表
mysql> show tables;
#查看当前所在库
mysql> select database();
#查看mysql用户
mysql> select user,host from user;
mysql> select user,host,password from user;
#删除用户
mysql> select user,host from user;
mysql> drop user ''@'db02';
mysql> drop user root@db02;
mysql> drop user root@'::1';
mysql> drop user root@'127.0.0.1';
#数据库重载 启动 停止
[root@db02 scripts]# systemctl daemon-reload
[root@db02 scripts]# systemctl start mysqld
[root@db02 scripts]# systemctl stop mysqld
数据库启动失败报错
[root@db02 scripts]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/usr/local/mysql-5.6.46/data/db02.err'.
200709 15:42:14 mysqld_safe Directory '/usr/local/mysql-5.6.46/tmp' for UNIX socket file don't exists.
ERROR! The server quit without updating PID file (/usr/local/mysql-5.6.46/data/db02.pid).
#原因:
1.cmake过程指定了socket文件位置,实际位置不存在
2.目录权限不足
#解决:
[root@db02 scripts]# mkdir /usr/local/mysql-5.6.46/tmp/
[root@db02 scripts]# chown -R mysql.mysql /usr/local/mysql
[root@db02 scripts]# chown -R mysql.mysql /usr/local/mysql-5.6.46/