一、准备环境
1、机器准备:linux系统服务器一台,本次以CentOS为例。
2、安装包准备:mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz(可通过MySQL官网下载)。
3、将安装包上传至linux服务器上,并解压(tar -zxvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz)。
4、解压目录中的INSTALL-BINARY文件描述了MySQL的安装方法,但有些步骤无法成功,所以现总结安装步骤如下。
二、MySQL单实例安装
1、由于Centos系统在安装时会在etc目录下默认配置my.cnf文件,所以需要将此目录删除或重命名。
mv my.cnf my.cnfback
2、添加mysql用户组
groupadd mysql
3、添加mysql用户
useradd -r -g mysql mysql
4、进入mysql 压缩包目录
cd /usr/local
5、创建软链接
ln -s mysql-5.7.9-linux-glibc2.5-x86_64 mysql
6、进入mysql目录
cd mysql
7、新建mysql-files和data目录
mkdir mysql-files
mkdir data
8、给当前用户和用户组赋全部权限
chmod 770 mysql-files
9、将目录所有者改为mysql
chown -R mysql .
10、将目录所有用户组改为mysql
chgrp -R mysql .
11、初始化mysql(5.7.6以上版本使用此命令,其他版本见INSTALL-BINARY文件),初始化时会给出默认密码见下图。
bin/mysqld --initialize --user=mysql
12、设置加密链接(# MySQL 5.7.6 and up)
bin/mysql_ssl_rsa_setup
13、将拥有者改为root
chown -R root .
14、将文件的拥有者改为mysql
chown -R mysql data mysql-files
15、安全启动mysql服务
bin/mysqld_safe --user=mysql &
16、验证是否启动成功
ps -ef |grep mysqld
配置环境变量
1.vi /etc/profile
2.在文件内添加:export PATH=/usr/local/mysql/bin:$PATH
3.关闭文件后,执行命令,使环境变量生效:source /etc/profile
配置开机启动
1、cp support-files/mysql.server /etc/init.d/mysql.server
2、chkconfig mysql.server on
3、chkconfig --list
登录并设定密码
1、mysql -uroot -p'vdly)iIme4?2'; # vdly)iIme4?2 为之前初始化时的初始密码
2、设定密码:set password = xxxx
三、MySQL多实例安装
1、在单实例的基础上,新建/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
# service stop need username and password
user=xxx
pass=xxx
[mysqld3307]
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
[mysqld3308]
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
2、创建数据目录并初始化
1、根据配置文件内容,创建数据目录
cd /usr/local/mysql
mkdir data1
mkdir data2
2、赋权
chown mysql.mysql data{1..2}
3、初始化
mysqld --initialize --user=mysql --datadir=/data1
mysqld --initialize --user=mysql --datadir=/data2
3、配置开机启动
cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multid
chkconfig mysqld_multid on
4、启动服务并验证
1、启动服务
mysqld_multi start
(mysqld_multi stop 关闭服务,须在配置文件中设置用户名密码)
2、验证是否启动
mysqld_multi report
3、链接并修改密码
mysql -u root -S /tmp/mysql.sock1 -p -P3307;
set password = 'xxxxx';
flush privileges;
exit;
mysql -u root -S /tmp/mysql.sock2 -p -P3308;
set password = 'xxxxx';
flush privileges;
exit;
四、MySQL授权
为了防止删除跑路,各数据库都有自己的权限控制,MySQL也不例外。不过,mysql授权用户不仅仅是指用户标识,而是赋予“用户+IP”的。5.7之后引入了“角色”概念,但此概念和其他数据库不同,MySQL官方把它叫做“Role like”。
MySQL 授权命令简单总结如:grant 权限 on 数据库对象 to 用户。
1、授权给用户某数据库所有表增删改查的权限
grant select on db.* to user@'%';
grant insert on db.* to user@'%';
grant update on db.* to user@'%';
grant delete on db.* to user@'%';
或
grant select, insert, update, delete on db.* to user@'%'
2、查看某用户拥有哪些权限
show grants for 'user'@'%'
Mysql中涉及到权限的表(mysql数据库下)
mysql.user
User的一行记录代表一个用户标识
mysql.db
db的一行记录代表对数据库的权限
mysql.table_priv
table_priv的一行记录代表对表的权
mysql_column_priv
column_priv的一行记录代表对某一列的权限