全球访问量最大的20家网站,他们分别使用了什么数据库呢,绝大多数使用mysql,有两个完整live.com和bing使用的是mssql,并不是他们使用不了mysql,而是他要支持自己的数据库。
在国外可能挺多使用mssql或者oracle的,但是在过能,在去IOE的大背景下,包括银行在内的很多传统公司慢慢都在像mysql转型,不过其中有个老大不掉的公司,中国电力,依然使用oracle,在十年的时间仅仅在oracle的使用上,中国电力就支出390几个亿,平均一年30,40个亿,它有钱,如果你所在公司随随便便也能拿个几百个亿,那你也用oracle吧
一、MySQL安装
在第一期,课程是在windows安装的mysql,但第二期,同学们都有linux基础了,所以,第二期会在linux上使用,没有使用过linux的同学先去看下第一期peter老师的视频。
1、准备工作
Linux 使用的版本是centos 7,为方便起见,先把防火墙关闭,配置好网络,在安装部分,会分成两部分讲,首先讲单实例安装,也就是一台服务器上就装一个mysql,接下来就多实例安装,在一个服务器上安装2个甚至多个mysql。
2、单实例安装
安装需要的依赖
yum install -y libaio
2.1、解压mysql到/usr/local目录:
首先复制文件到/usr/local/下面,然后解压
cp /soft/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz /usr/local/
shell> cd /usr/local
shell> tar -zxvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz
2.1、添加用户与组
shell> groupadd mysql
shell> useradd -r -g mysql mysql
// 建立一个mysql的软连接
shell> ln -s /usr/local/mysql-5.7.9-linux-glibc2.5-x86_64 mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chmod 770 mysql-files
2.3、改变一个目录的所有人属性并同时改变改目录下所有文件的属性
shell> chown -R mysql .
// 改变文件的群组
shell> chgrp -R mysql .
// 密码:ry4Plm(Oy*jq(注意第一次安装出现失败后,继续从该命令开始安装)
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> chown -R root .
// 在mysql创建一个data目录,用于存放数据文件。执行以下命令
shell> chown -R mysql data mysql-files
2.4、启动服务
出现错误,原因是/etc/my.cnf文件没有权限
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
2.5、设置开机启动项:
查看启动项命令:chkconfig --list
mysql>FLUSH PRIVILEGES; #刷新权限
配置开启启动
chkconfig mysql.server on
chkconfig --list
2.6、配置环境变量:
查看命令:vi /etc/profile(添加下面内容)
export PATH=/usr/local/mysql/bin:$PATH
2.7、登陆设置密码
在mysql系统外,使用mysqladmin(进入到/var/local/mysql/bin)。
登陆:mysql -uroot -p'ry4Plm(Oy*jq'
修改密码:set password = 'root';
2.8、授权访问
在 Linux 下为了安全,默认是不允许 MySQL 服务器本机以外的机器访问 MySQL 数据库服务的,因此需要重新授权 root 账号。方便其他机器远程访问 MySQL 服务器,MySQL 命令如下:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root1234%'
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
2.9、测试查询
这样就可以允许从其他机器用 root 账号远程登录 MySQL 服务器了,可以用下面的 MySQL 命令来验证一下:
mysql> use mysql;
mysql> select host,user from user;
启动的时候可能会报错
这是因为mysql启动的时候需要配置文件,而在安装centos的时候,哪怕是mini版本都会有个默认的配置在/etc目录中:
/usr/local/mysql/bin/mysqld --verbose --help |grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
Mysql启动的时候会以上面所述的顺序加载配置文件
注意:如果报错,先重命名my.cnf文件
3、多实例安装
以前一些很low的方法是,解压两个mysql,分别放到不同文件夹,其实在mysql中已经考虑到了多实例安装的情况。也有相应的脚本命令的支持。
现在要求装两个mysql 一个3307,3308
3.1、解压到/usr/local/ 下面, 更名mysql
cp /soft/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz /usr/local/
tar xzvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz
mv /usr/local/mysql-5.7.9-linux-glibc2.5-x86_64 /usr/local/mysql
3.2、新建 /etc/my.cnf 配置如下
vi /etc/my.cnf
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /var/log/mysqld_multi.log
[mysqld1]
server-id = 11
socket = /tmp/mysql.sock1
port = 3307
datadir = /data1
user = mysql
performance_schema = off
innodb_buffer_pool_size = 32M
skip_name_resolve = 1
log_error = error.log
pid-file = /data1/mysql.pid1
[mysqld2]
server-id = 12
socket = /tmp/mysql.sock2
port = 3308
datadir = /data2
user = mysql
performance_schema = off
innodb_buffer_pool_size = 32M
skip_name_resolve = 1
log_error = error.log
pid-file = /data2/mysql.pid2
3)改变文件夹权限
创建mysql用户和用户组:
groupadd mysql
useradd mysql -g mysql
chown -R mysql:mysql mysql/
chmod -R 755 mysql/
4)建立一个mysql的软连接
shell> ln -s /usr/local/mysql-5.7.9-linux-glibc2.5-x86_64 mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chmod 770 mysql-files
注意:安装依赖包(非必须)
yum -y install make gcc-c++ cmake bison-devel ncurses-devellibaio libaio-devel
5)创建2个数据目录并赋权限
mkdir /data1
mkdir /data2
chown mysql.mysql /data1
chown mysql.mysql /data2
6)初始化各个实例:
初始化完后会在日志中生成密码,记得保存,一会要用。
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data1
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data2
7)开启各实例的SSL连接(可选)
/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data1
/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data2
8)添加环境变量
a、在文件最后面添加内容:
vi /etc/profile
## SETUP MYSQL’S PATH
export MYSQL_HOME=/usr/local/mysql
export PATH=${MYSQL_HOME}/bin:$PATH
b、 使修改的配置文件生效:
source /etc/profile
9)配置开机启动
复制多实例脚本到服务管理目录下
cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multid
或者:mv /data/soft/mysql/support-files/mysql.server /etc/init.d/mysqld_multid
给予脚本可执行权限:
chmod +x /etc/init.d/mysqld_multid
加入service服务管理:
chkconfig --add mysqld_multid
显示服务列表:
chkconfig --list
如果3,4,5都是开的就说明是自启设置成功。没有的话,就执行
chkconfig --level 345 mysqld_multid on
chkconfig mysqld_multid on(实现不了)
10)查看状态:
/etc/init.d/mysqld_multid report