解压安装,可以指定软件文件夹和数据文件位置:
https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files
初始化数据库
shell> bin/mysqld --initialize --user=mysql
如果需要指定目录:
bin/mysqld --initialize --user=mysql --basedir=/u01/opt/mysql57/mysql --datadir=/u01/opt/mysql57/data/
初始化后,记录一下root用户的密码
注:网络很多教程在这一步去创建my.cnf 或者使用mysql_install_db安装,都不是官方文档推荐的方式。
shell> bin/mysql_ssl_rsa_setup --datadir=/u01/opt/mysql57/data/
上面命令是开启ssl这样更安全
启动数据库:
shell> bin/mysqld_safe --user=mysql & --启动数据库
如果需要指定目录
bin/mysqld_safe --user=mysql --datadir=/u01/opt/mysql57/data/ &
如果不喜欢写在命令行,可以在cnf或者inf文件里说明
[mysqld]
basedir=/opt/mysql/mysql
datadir=/opt/mysql/mysql/data
关闭:
shell> bin/mysqladmin shutdown
shell> bin/mysqladmin -u root -p shutdown
登录数据库
shell> bin/mysql -uroot -p
密码输入初始化数据库时系统提示的
修改密码:
SQL> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
rpm安装:
服务器没互联网。
- windows下载bundle; mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
- 拷贝到服务器.
pscp -C G:\KuGou\mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar root@192.168.xxx.xxx:/opt/mysqlsoft
- 解压到安装目录:
tar xvf mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar -C /opt/mysql/
- 是否需要卸载centos7自带的mariadb-lib
$ rpm -qa|grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
$ yum remove mysql-libs
5、安装net-tools
先下载 http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
6、安装:几个包有依赖关系,所以执行有先后
[root@centos-linux ~]# rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm
7、数据库初始化
mysqld --initialize --user=mysql
8、启动数据库
systemctl start mysqld.service
systemctl enable mysqld.service #开机自启动
systemctl restart mysqld.service
systemctl stop mysqld.service
systemctl status mysqld.service
9、查看密码,登录数据库
cat /var/log/mysqld.log
mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
10、建用户,建库,授权
create user user01 identified by 'userpassword';
create database yourdb;
grant all privileges on yourdb.* to 'user01'@'%';
flush privileges;
如果用户是 `user01`@`ip`
create user `user01`@`ip` 。。。
flush privileges; -- 不能省略,否则 Can't find any matching row in the user table
grant all privileges on yourdb.* to 'user01'@'%';
flush privileges;
11、
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
12、 成功:
如果需要导入数据,可以继续往下看
13、mysql使用的配置文件:
./bin/mysql --help|grep 'my.cnf'
1. 查看mysql进程,是否使用了配置文件启动。下面命令结果中有无defaults-file=xxx
ps aux|grep mysql
2. 默认配置文件.
mysql --help|grep 'my.cnf'
3. 查看所有my.cnf ;如果默认配置文件没有结果,创建一个默认,/ect/my.cnf就行。
locate my.cnf
14、表名大小写敏感问题。
个人倾向,数据库表名全部小写,忽视大小写问题。
找到my.cnf配置文件
在[mysqld]节点下添加
lower_case_table_names=1
15、初始导入数据。因为外键导致导入报错。因为max_allowed_packet太小报错。
导入前
SET FOREIGN_KEY_CHECKS=0;
导入后
set FOREIGN_KEY_CHECKS=1;
show variables like 'max_allowed_packet';
set global max_allowed_packet=1024*1024*16;
16、mysql运行一段时间后,binlog日志问题:
mysql> show variables like 'expire_logs_days';
mysql> set global expire_logs_days =15;
mysql> flush logs;
不要轻易手动去删除binlog,会导致binlog.index和真实存在的binlog不匹配,而导致expire_logs_day失效。