mysql 5.7 安装部署过程
防火墙+selinux:均已关闭
1. hosts文件
echo "oracle12c1 192.168.0.100" >> /etc/hosts
2.卸载 系统自带mysql,mariadb
rpm -qa | grep mysql
rpm -qa | grep mariadb
rpm -e --nodeps mysql*
rpm -e --nodeps mariadb*
3.安装,生产环境规范
mkdir -p /mysql/app
mkdir -p /mysql/data/3306
mkdir -p /mysql/log/3306
mkdir /backup
解压 mysql
tar -zxf mysql*.tar.gz -C /mysql/app
mv /mysql/app/mysql* /mysql/app/mysql
4.配置环境变量
vim
PATH=$PATH:/mysql/app/mysql/bin # 如果路径放在$PATH后面,先使用旧的版本的MySQL,比如说在备份的时候,会用旧版本的或者系统自带的版本mysqldump备份mysql5.7,会出错,所以,要把bin路径放在前面
5.
[root@oracle12c1 mysql]# groupadd mysql
[root@oracle12c1 mysql]# useradd -r -g mysql -s /sbin/nologin mysql (-r -s 的目的 不让其作为登录用户)
[root@oracle12c1 mysql]# chown -R mysql:mysql /mysql
6.mysql配置文件 vim /mysql/data/3306/my.cnf
[mysql]
default-character-set=utf8
#socket=/mysql/data/3306/mysql.sock
[mysqld]
port=3306
#socker=/mysql/data/3306/mysql.sock
basedir=/mysql/app/mysql
datadir=/mysql/data/3306/data
character-set-server=utf8
default-storage-engine=INNODB
innodb_buffer_pool_size=200M
max_allowed_packet=16M
explicit_defaults_for_timestamp=1
log-output=FILE
general_log=0
general_log_file=/mysql/log/3306/general.err
slow_query_log=ON
slow_query_log_file=/mysql/log/3306/query.err
long_query_time=10
log-error=/mysql/log/3306/error.err
touch general.err
touch query.err
ln -sf /mysql/data/3306/my.cnf /etc/my.cnf
[root@oracle12c1 mysql]# /mysql/app/mysql/bin/mysqld --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data
有临时密码
7.安装后的设置和开机启动
vim /usr/lib/systemd/system/mysqld.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
ExecStart=/mysql/app/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
LimitNOFILE=65536
LimitNPROC=65536
systemctl daemon-reload
systemctl stop mysqld
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
命令行启动和关闭:
nohup /mysql/app/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
>/dev/null 2>&1 不显示在外面
nohup /mysql/app/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf >/dev/null 2>&1 &
mysqladmin -uroot -p shutdown
###############
>/dev/null 2>&1 正确,错误 日志全部 不输出
2>&1 >/dev/null 正确的不输出屏幕,错误的输出到屏幕
启动脚本
/mysql/app/mysql/bin/mysqld_safe --defaults-file=/mysql/data/3306/my.cnf --user=mysql 2>&1 >/dev/null &
################
8.进入数据库
[root@oracle12c1 bin]# mysql -u root -p
拿密码 cat /mysql/log/3306/error.err | grep "password" 按行输出
### 改密码
mysql> alter user 'root'@'localhost' IDENTIFIED by 'root'; 这里的localhost是本地ip的表示方式
mysql> use mysql
mysql> select host,user from user where user='root';
####开启远程登录
mysql> create USER 'root'@'%' IDENTIFIED by 'root'; %是所有的ip
mysql> grant all privileges on *.* to 'root'@'%' with grant option; 修改所有权限,到所有的数据库的所有的表 到root 并设置管理员
####测试 可不可以远程登陆
mysql> select host,user from user where user='root';
[root@oracle12c1 bin]# mysql -u root -p -horacle12c1 -h远程登录 hostname 或者 IP地址
mysql> show databases;
[root@oracle12c1 bin]# systemctl stop firewalld
[root@oracle12c1 bin]# systemctl disable firewalld
9.创建数据库,建表
[root@oracle12c1 bin]# mysql -uroot -p
mysql> create database testdb default charset utf8mb4;
mysql> create user 'test'@'%' identified by 'test';
mysql> select host,user from mysql.user;
授权本地登录和远程登陆
mysql> grant all privileges on testdb.* to 'test'@'localhost' identified by 'test';
mysql> grant all privileges on testdb.* to 'test'@'%' identified by 'test';
mysql> use testdb
mysql> create table test01(
id int auto_increment primary key,
name varchar(15)
)engine=InnoDB;
insert into test01 values (1,'zhang');
insert into test01 values (2,'liu');
mysql> select * from test01;
+----+-------+
| id | name |
+----+-------+
| 1 | zhang |
| 2 | liu |
+----+-------+
2 rows in set (0.00 sec)
mysql> commit;