centos7安装mysql5.7压缩包式安装
1.上传压缩包至/kht文件夹下,并解压后名称改为mysql5.7
2.在mysql5.7下新建mkdir sock log tmp data
my.cnf文件内容如下:
[client]
#SSL Settings
ssl-ca=/kht/mysql5.7/data/ca.pem
ssl-cert=/kht/mysql5.7/data/client-cert.pem
ssl-key=/kht/mysql5.7/data/client-key.pem
#设置3306端口
port = 3306
#设置mysql客户端默认字符集
default-character-set=utf8
#mysql以socket方式运行的sock文件位置
#socket=/var/lib/mysql/mysql.sock
socket=/kht/mysql5.7/sock/mysql.sock
[mysqld]
#SSL Settings
ssl-ca=/kht/mysql5.7/data/ca.pem
ssl-cert=/kht/mysql5.7/data/server-cert.pem
ssl-key=/kht/mysql5.7/data/server-key.pem
#时区加8小时
default-time-zone='+8:00'
#跳过权限表校验,忘记密码时使用
#skip-grant-tables
#禁用DNS解析,只能用ip访问
skip-name-resolve
#设置3306端口
port = 3306
#设置mysql的安装目录
basedir=/kht/mysql5.7
#设置mysql数据库的数据的存放目录
datadir=/kht/mysql5.7/data
#mysql以socket方式运行的sock文件位置
#socket=/var/lib/mysql/mysql.sock
socket=/kht/mysql5.7/sock/mysql.sock
#mysql存放临时文件的目录
tmpdir=/kht/mysql5.7/tmp
#设置日志的时区,错误日志默认是使用utc时间,可以修改为系统时间方便查看
log_timestamps=SYSTEM
#错误日志位置
log-error=/kht/mysql5.7/log/mysqld.log
#log_error_verbosity记录mysql的日志级别,1只记录ERROR级别的日志,2记录ERROR和warining信息,3记录ERROR和warning和一般的信息如NOTE级别
log_error_verbosity=3
#慢查询日志,1表示开启,0关闭
slow_query_log=1
#慢查询日志存放位置
slow_query_log_file=/kht/mysql5.7/log/mysql_slow.log
#慢查询的时间,单位秒,条件是大于
long_query_time=0.01
#慢查询默认FILE,是记录到文件中,TABLE是存入mysql.slow_log表中。2者可同时存在,以逗号分隔,存入到表中,更耗资源
log_output=FILE
#进程id文件
pid-file=/kht/mysql5.7/sock/mysqld.pid
#是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
symbolic-links=0
#mysql监听的ip地址,如果是127.0.0.1,表示仅本机访问
#bind_address = 127.0.0.1
#数据修改是否自动提交,为0不自动提交,默认值为1自动提交
autocommit = 1
#禁用DNS主机名查找,启用以后用内网地址向mysqlslap请求响应快了一半
#skip_name_resolve = 1
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#某台host连接错误次数等于max_connect_errors(默认10),主机'host_name'再次尝试时被屏蔽。可有效反的防止dos攻击
max_connect_errors = 2
#mysql最大接受的数据包大小
max_allowed_packet = 16M
#lower_case_table_names=0的情况下,表名是严格区分大小写的,为1时,不区分大小写
#linux下lower_case_table_names默认值为0.Windows下默认值是1.MacOS下默认值是 2
lower_case_table_names=1
#sql_mode是一组语法校验规则
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#mysql连接超时时间,默认10s
connect_timeout=11
#mysql连接如果空闲超8小时,则连接中断,默认是8小时,即28800秒,用show global variables like '%timeout%';查询全局
#对于非交互式连接,类似于jdbc连接,wait_timeout的值继承自服务器端全局变量wait_timeout。
wait_timeout=20000
#对于交互式连接,类似于mysql客户单连接,wait_timeout的值继承自服务器端全局变量interactive_timeout。默认是8小时,即28800秒.
interactive_timeout=20001
#mysql启动用户
user=root
#表中的timestamp列,如果没有定义为null,default值或者on update,会自动分配default current_timestamp和on update current_timestamp属性
explicit_defaults_for_timestamp=true
3.查找rpm -qa|grep libaio
安装 yum install libaio-devel.x86_64 -y
4.在bin目录下执行:
./mysqld --initialize --user=root --basedir=/kht/mysql5.7 --datadir=/kht/mysql5.7/data
5.记录初始化的密码,并完成密码修改。启动报错时,新建对应的目录
5.修改support-files/mysql.server 文件的内容为对应的所在目录。
6.设置mysql为systemct start mysql方式启动
将服务文件拷贝到init.d下,并重命名为mysql:
cp /kht/mysql5.7/support-files/mysql.server /etc/init.d/mysql -r
赋予可执行权限:chmod +x /etc/init.d/mysql
添加服务:chkconfig --add mysql
显示服务列表:chkconfig --list (3.4.5都是on状态,服务器重启后生效)
7.配置mysql的环境变量vim /etc/profile export PATH=$PATH:/kht/mysql5.7/bin
8.修改登录密码:
mysql>alter user 'root'@'localhost' identified by 'kht123';
9.授予远程登录权限:
mysql>grant all privileges on *.* to 'root'@'%' identified by 'kht123' with grant option;
刷新权限(切勿忘记关闭防火墙):
mysql>flush privileges;
10. mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
发现root用户的访问权限是localhost,需要修改host为%,输入命令:
update user set host='%' where user='root';
mysql>flush privileges;
1.如提示如下错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
2.增加软连接:
ln -s /kht/mysql5.7/sock/mysql.sock /tmp/mysql.sock
3.mysql -uroot -h 127.0.0.1 -p 和 mysql -uroot -p 都可以进入mysql命令行
数据库备份
mysqldump.sh文件内容:
mysqldump --socket=/var/lib/mysql/mysql.sock -h'localhost' -P3306 -uroot -p'123' mysql --default-character-set=utf8 | gzip > /kht/mysql5.7/back/lims_$(date "+%Y%m%d%H%M%S").sql.gz
1.如果之前有安装过mysql8,先卸载
yum remove mysql mysql-server mysql-libs mysql-server -y;
rm -rf /var/log/mysqld.log;
find / -name mysql; // 找到有关系统的mysql,有rm -rf 删除,如下
rm -rf /etc/logrotate.d/mysql ;
rm -rf /etc/selinux/targeted/active/modules/100/mysql /etc/selinux/targeted/tmp/modules/100/mysql;
rm -rf /var/lib/pcp/config/pmlogconf/mysql /var/lib/mysql;
rm -rf /var/lib/mysql/mysql /usr/bin/mysql /usr/lib64/mysql;
mysql8的配置文件
[client]
#SSL Settings
ssl-ca=/kht/mysql8/data/ca.pem
ssl-cert=/kht/mysql8/data/client-cert.pem
ssl-key=/kht/mysql8/data/client-key.pem
#设置3306端口
port = 3306
#设置mysql客户端默认字符集
default-character-set=utf8
#mysql以socket方式运行的sock文件位置
#socket=/var/lib/mysql/mysql.sock
socket=/kht/mysql8/sock/mysql.sock
[mysqld]
#SSL Settings
ssl-ca=/kht/mysql8/data/ca.pem
ssl-cert=/kht/mysql8/data/server-cert.pem
ssl-key=/kht/mysql8/data/server-key.pem
#时区加8小时
default-time-zone='+8:00'
#跳过权限表校验,忘记密码时使用
#skip-grant-tables
#禁用DNS解析,只能用ip访问
skip-name-resolve
#设置3306端口
port = 3306
#设置mysql的安装目录
basedir=/kht/mysql8
#设置mysql数据库的数据的存放目录
datadir=/kht/mysql8/data
#mysql以socket方式运行的sock文件位置
#socket=/var/lib/mysql/mysql.sock
socket=/kht/mysql8/sock/mysql.sock
#mysql存放临时文件的目录
tmpdir=/kht/mysql8/tmp
#设置日志的时区,错误日志默认是使用utc时间,可以修改为系统时间方便查看
log_timestamps=SYSTEM
#错误日志位置
log-error=/kht/mysql8/log/mysqld.log
#log_error_verbosity记录mysql的日志级别,1只记录ERROR级别的日志,2记录ERROR和warining信息,3记录ERROR和warning和一般的信息如NOTE级别
log_error_verbosity=3
#慢查询日志,1表示开启,0关闭
slow_query_log=1
#慢查询日志存放位置
slow_query_log_file=/kht/mysql8/log/mysql_slow.log
#慢查询的时间,单位秒,条件是大于
long_query_time=0.01
#慢查询默认FILE,是记录到文件中,TABLE是存入mysql.slow_log表中。2者可同时存在,以逗号分隔,存入到表中,更耗资源
log_output=FILE
#进程id文件
pid-file=/kht/mysql8/sock/mysqld.pid
#是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
symbolic-links=0
#mysql监听的ip地址,如果是127.0.0.1,表示仅本机访问
#bind_address = 127.0.0.1
#数据修改是否自动提交,为0不自动提交,默认值为1自动提交
autocommit = 1
#禁用DNS主机名查找,启用以后用内网地址向mysqlslap请求响应快了一半
#skip_name_resolve = 1
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#某台host连接错误次数等于max_connect_errors(默认10),主机'host_name'再次尝试时被屏蔽。可有效反的防止dos攻击
max_connect_errors = 2
#mysql最大接受的数据包大小
max_allowed_packet = 16M
#lower_case_table_names=0的情况下,表名是严格区分大小写的,为1时,不区分大小写
#linux下lower_case_table_names默认值为0.Windows下默认值是1.MacOS下默认值是 2
#mysql8初始化之前设置后不可修改默认值
#lower_case_table_names=1
#sql_mode是一组语法校验规则
#sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#mysql连接超时时间,默认10s
connect_timeout=11
#mysql连接如果空闲超8小时,则连接中断,默认是8小时,即28800秒,用show global variables like '%timeout%';查询全局
#对于非交互式连接,类似于jdbc连接,wait_timeout的值继承自服务器端全局变量wait_timeout。
wait_timeout=20000
#对于交互式连接,类似于mysql客户单连接,wait_timeout的值继承自服务器端全局变量interactive_timeout。默认是8小时,即28800秒.
interactive_timeout=20001
#mysql启动用户
user=root
#表中的timestamp列,如果没有定义为null,default值或者on update,会自动分配default current_timestamp和on update current_timestamp属性
explicit_defaults_for_timestamp=true
特殊符号远程授权
create user 'root'@'%' identified with mysql_native_password by 'password@123mysql';
grant all privileges on . to 'root'@'%' with grant option;
flush privileges;
查看密码策略
SHOW VARIABLES LIKE 'validate_password%';
修改密码策略
set global validate_password.policy=0;
CREATE USER 'root'@'%' IDENTIFIED BY 'password@123mysql';
GRANT ALL ON . TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password@123mysql';