环境
- 服务器:centos7.3
- MySQL版本:5.7.31
安装
-
官网下载最新MySQL版本:https://dev.mysql.com/downloads/
-
卸载MariaDB
1.rpm -qa | grep -i mariadb
2.rpm -e mariadb-libs-5.5.52-1.el7.x86_64 --nodeps -
安装MySQL
1.tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar
2.rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm
3.rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm --nodeps --force
4.rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm
5.rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm --nodeps --force -
启动命令
1.service mysqld status //查看是否启动
2.service mysqld start //启动
3.service mysqld stop //停止
4.service mysqld restart //重启 -
查看端口
netstat -antl|grep 3306 -
修改登录密码
1.查看临时密码:grep password /var/log/mysqld.log
2.通过临时密码登录mysql后执行:alter user ‘root’@‘localhost’ identified by ‘your password’;
如果报错:ERROR 1820 (HY000): Unknown error 1820,用另外一种修改密码方法,如下:
SET PASSWORD = PASSWORD(‘123’) -
添加远程访问
登录MySQL后,执行
grant all privileges on *.* to ‘root’@‘%’ identified by ‘your password’ ; -
mysql5.7版本默认安装目录
默认配置文件:/etc/my.cnf
默认数据目录:/var/lib/mysql
- 修改默认的数据目录
1.关闭mysql服务:service mysqld stop
2.修改配置文件:vim /etc/my.cnf,将datadir和socket指向自己的目录,如/home/mysql/data
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
datadir=/home/mysql/data
socket=/home/mysql/data/mysql.sock
3.(新库,且修改数据目录datadir前没有启动数据库,则这个步骤不需要)拷贝原默认目录下的所有数据到新目录中:cp -r /var/lib/mysql/* /home/mysql/data
4.给新目录赋予权限:chown -R mysql:mysql /home/mysql/data
5.重启服务:service mysqld start
6.重启后会报错,执行如下命令即可:setenforce 0。该报错及解决命令的详细说明,见https://www.iteye.com/blog/jejoker-1882028
最后验证:创建数据库、表验证是否生成到指定目录
7.目录更改后,虽然用客户端工具连接mysql没有问题。但是用mysql命令行访问是不行的,报错:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
两种解决方法:
1.建立软连接:ln -s /home/mysql/data/mysql.sock /var/lib/mysql/mysql.sock
2.vim /etc/my.cfn,添加如下内容
[client]
socket=/home/mysql/data/mysql.sock
- 修改数据库密码(版本大于mysql5.7)
mysql5.7以上版本,对设置的密码要求严格。默认是要包含大小写、数字、特殊字符。所以如果想把密码修改简单格式,如123456。则需要先设置两个参数,过程如下。其中,validate_password_policy=0表示只对密码做长度限制,validate_password_length=1表示密码长度应大于1.
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql>alter user ‘root’@‘localhost’ identified by ‘123456’;
密码修改后,远程登录就会失效。可以在密码修改后,直接开启远程登录模式
mysql>grant all privileges on *.* to ‘root’@‘%’ identified by ‘123456’ ;