1.准备安装软件
下载链接:http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
此链接真实有效,如果你去官网查看下载版本是很难找到的。下载下来就上传到服务器上 ,这里使用的linux版本是Centos7的。
2.上传都/user/local/目录下。
解压:tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
文件映射: ln -s mysql-5.7.22-linux-glibc2.12-x86_64 mysql
注意:
1:ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
2:ln的链接又软链接 和硬链接两种,软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls -l命令去察看,就可以看到显示的link的路径了。
3:创建mysql用户,用于启动mysql的。
[root@iZwz98almviffnifazuznsZ local]# groupadd mysql
[root@iZwz98almviffnifazuznsZ local]# useradd -r -g mysql -s /bin/false mysql
[root@iZwz98almviffnifazuznsZ local]# chown -R mysql:mysql mysql (一定要注意设置权限,不然启动时会报错)
4:进入创建出来的mysql文件夹中初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
记住这个初始密码,登录的时候有用到。
5:安装证书:bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
6.编辑my.conf文件
vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
character_set_server = utf8
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
注意:log-error和pid-file这里指向的文件需要手动创建否则启动会报错
创建命令:
mkdir /var/log/mariadb
mkdir /var/run/mariadb
chown mysql -R /var/run/mariadb
编辑好my.conf文件直接去bin目录下运行:./mysqld_safe --user=mysql &
如果没有报错,查看一个3306端口是否启动。如图所示说明数据库配置正常。
7.登录数据库,修改root用户密码
mysql -uroot -p
注意:这里会出现要么成功执行输入密码即可。如果出现 -bash: mysql: command not found。
还需要执行一步代码:ln -s /usr/local/mysql/bin/mysql /usr/bin
设置密码:依次执行一下代码即可
set password=password("root");
use mysql
update user set host='%' where user='root';(设置远程登录用户)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY '......' WITH GRANT OPTION;
FLUSH PRIVILEGES;
8.设置开机自动启动
cp mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig --list mysql
启动命令:
service mysql stop
service mysql start
代码层面问题:
使用这个数据库可能会导致sql报错:
Expression #2of SELECT list isnot in GROUP BY clause and contains
nonaggregated column ‘sss.month_id’ which is not functionally
dependent on columns inGROUP BY clause; thisis incompatible with
sql_mode=only_full_group_by
这说明sql语句里面使用group by 导致的,5.7以上的数据库都把ONLY_FULL_GROUP_BY设置成默认的。只需要重新设置一下即可:
Set @@global.sql_mode=’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION’