centos7安装mysql5.7(或8)压缩包式安装
centos7安装mysql5.7压缩包式安装
#查询是否有残留软件
[root@kht118 kht]# rpm -aq|grep mysql
[root@kht118 kht]# rpm -aq|grep mariadb
mariadb-libs-5.5.65-1.el7.x86_64
[root@kht118 kht]# yum remove -y mariadb-libs-5.5.65-1.el7.x86_64
[root@kht118 mysql]# find / -name *mysql*
[root@kht118 mysql]# find / -name *mariadb*
1.上传压缩包至/kht文件夹下,并解压后名称改为mysql5.7
2.在mysql5.7下新建mkdir sock log tmp data binlog
my.cnf文件内容如下:
3.#查找rpm -qa|grep libaio
安装 yum install libaio-devel.x86_64 -y
4.#在bin目录下执行:
./mysqld --initialize --user=root --basedir=/usr/local/mysql5.7 --datadir=/usr/local/mysql5.7/data
5.#修改support-files/mysql.server 文件的内容为对应的所在目录。
/usr/local/mysql替换,my.cnf文件所在目录
6.#进入support-files目录,启动mysql,若启动报错,log-error=配置文件不生效,新建/var/log/mariadb/mariadb.log目录文件
./mysql.server start
7.#进入bin目录,socket本地客户端进入sql:./mysql -uroot -p -S /usr/local/mysql5.7/sock/mysql.sock
8.#修改登录密码:
mysql>alter user 'root'@'localhost' identified by 'kht123';
9.#授予远程登录权限:
mysql>grant all privileges on *.* to 'root'@'%' identified by 'kht123' with grant option;
10.#刷新权限(切勿忘记关闭防火墙):
mysql>flush privileges;
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;
11.#设置mysql为systemct start mysql方式启动
#将服务文件拷贝到init.d下,并重命名为mysqld:
cp /usr/local/mysql5.7/support-files/mysql.server /etc/init.d/mysqld -r
#赋予可执行权限:
chmod +x /etc/init.d/mysqld
#添加服务:
chkconfig --add mysqld
#显示服务列表:(3.4.5都是on状态,服务器重启后生效)
chkconfig --list
12.#配置mysql的环境变量,mysql -uroot -p命令可以直接进入
vim /etc/profile export PATH=$PATH:/usr/local/mysql5.7/bin
[mysqld]
server-id=1
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
symbolic-links=0
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/usr/local/mysql/sock/mysqld.pid
#慢查询日志,1表示开启,0关闭
slow_query_log=1
#开启Binlog日志
log_bin=mysql-bin
[client]
#SSL Settings
ssl-ca=/usr/local/mysql5.7/data/ca.pem
ssl-cert=/usr/local/mysql5.7/data/client-cert.pem
ssl-key=/usr/local/mysql5.7/data/client-key.pem
#设置3306端口
port = 3306
#设置mysql客户端默认字符集
default-character-set=utf8
#mysql以socket方式运行的sock文件位置
#socket=/var/lib/mysql/mysql.sock
socket=/usr/local/mysql5.7/sock/mysql.sock
[mysqld]
#SSL Settings
ssl-ca=/usr/local/mysql5.7/data/ca.pem
ssl-cert=/usr/local/mysql5.7/data/server-cert.pem
ssl-key=/usr/local/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=/usr/local/mysql5.7
#设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql5.7/data
#mysql以socket方式运行的sock文件位置
#socket=/var/lib/mysql/mysql.sock
socket=/usr/local/mysql5.7/sock/mysql.sock
#mysql存放临时文件的目录
tmpdir=/usr/local/mysql5.7/tmp
#设置日志的时区,错误日志默认是使用utc时间,可以修改为系统时间方便查看
log_timestamps=SYSTEM
#错误日志位置
log-error=/usr/local/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=/usr/local/mysql5.7/log/mysql_slow.log
#慢查询的时间,单位秒,条件是大于
long_query_time=0.01
#慢查询默认FILE,是记录到文件中,TABLE是存入mysql.slow_log表中。2者可同时存在,以逗号分隔,存入到表中,更耗资源
log_output=FILE
#进程id文件
pid-file=/usr/local/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
#开启时间调度任务
event_scheduler = 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
1.如提示如下错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
2.增加软连接:
ln -s /usr/local/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
centos7安装mysql8压缩包式安装
#查询是否有残留软件
[root@kht118 kht]# rpm -aq|grep mysql
[root@kht118 kht]# rpm -aq|grep mariadb
mariadb-libs-5.5.65-1.el7.x86_64
[root@kht118 kht]# yum remove -y mariadb-libs-5.5.65-1.el7.x86_64
[root@kht118 mysql]# find / -name *mysql*
[root@kht118 mysql]# find / -name *mariadb*
#查找rpm -qa|grep libaio
安装 yum install libaio-devel.x86_64 -y
#如果之前有安装过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;
1.上传压缩包至/usr/local文件夹下,并解压后名称改为mysql8
2.在mysql8下新建mkdir sock log tmp data
my.cnf文件内容如下:
mysql8的配置文件
[client]
#SSL Settings
ssl-ca=/usr/local/mysql8/data/ca.pem
ssl-cert=/usr/local/mysql8/data/client-cert.pem
ssl-key=/usr/local/mysql8/data/client-key.pem
#设置3306端口
port = 3306
#设置mysql客户端默认字符集
default-character-set=utf8
#mysql以socket方式运行的sock文件位置
#socket=/var/lib/mysql/mysql.sock
socket=/usr/local/mysql8/sock/mysql.sock
[mysqld]
#SSL Settings
ssl-ca=/usr/local/mysql8/data/ca.pem
ssl-cert=/usr/local/mysql8/data/server-cert.pem
ssl-key=/usr/local/mysql8/data/server-key.pem
#时区加8小时
default-time-zone='+8:00'
#跳过权限表校验,忘记密码时使用
#skip-grant-tables
#禁用DNS解析,只能用ip访问
skip-name-resolve
#设置3306端口
port = 3306
#设置mysql的安装目录
basedir=/usr/local/mysql8
#设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql8/data
#mysql以socket方式运行的sock文件位置
#socket=/var/lib/mysql/mysql.sock
socket=/usr/local/mysql8/sock/mysql.sock
#mysql存放临时文件的目录
tmpdir=/usr/local/mysql8/tmp
#设置日志的时区,错误日志默认是使用utc时间,可以修改为系统时间方便查看
log_timestamps=SYSTEM
#错误日志位置
log-error=/usr/local/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=/usr/local/mysql8/log/mysql_slow.log
#慢查询的时间,单位秒,条件是大于
long_query_time=0.01
#慢查询默认FILE,是记录到文件中,TABLE是存入mysql.slow_log表中。2者可同时存在,以逗号分隔,存入到表中,更耗资源
log_output=FILE
#进程id文件
pid-file=/usr/local/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
4.#在bin目录下执行:(设置忽略大小写,注意保持my.cnf一致)
./mysqld --initialize --user=root --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data --lower-case-table-names=1
5.#修改support-files/mysql.server 文件的内容为对应的所在目录。
/usr/local/mysql替换,my.cnf文件所在目录
6.#进入support-files目录,启动mysql,若启动报错,log-error=配置文件不生效,新建/var/log/mariadb/mariadb.log目录文件
./mysql.server start
7.#进入bin目录,socket本地客户端进入sql:./mysql -uroot -p -S /usr/local/mysql8/sock/mysql.sock
8.#修改登录密码:
mysql>alter user 'root'@'localhost' identified by 'kht123';
9.#授予远程登录权限:
在MySQL5.7版本使用grant来进行用户授权,例:创建一个whsir用户,允许所有IP访问,密码是password
mysql> GRANT ALL PRIVILEGES ON *.* TO 'whsir'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
但是从MySQL8版本开始,不能再使用GRANT创建用户,而是要先CREATE USER,然后使用GRANT授权。
mysql> CREATE USER 'whsir'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
10.#刷新权限(切勿忘记关闭防火墙):
mysql>flush privileges;
mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
11.#设置mysql为systemct start mysql方式启动
#将服务文件拷贝到init.d下,并重命名为mysqld:
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld -r
#赋予可执行权限:
chmod +x /etc/init.d/mysqld
#添加服务:
chkconfig --add mysqld
#显示服务列表:(3.4.5都是on状态,服务器重启后生效)
chkconfig --list
12.#配置mysql的环境变量,mysql -uroot -p命令可以直接进入
vim /etc/profile export PATH=$PATH:/usr/local/mysql8/bin
1.如提示如下错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
2.增加软连接:
ln -s /usr/local/mysql8/sock/mysql.sock /tmp/mysql.sock
3.mysql -uroot -h 127.0.0.1 -p 和 mysql -uroot -p 都可以进入mysql命令行
#特殊符号远程授权
create user 'root'@'%' identified with mysql_native_password by 'kht123';
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 'kht123';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'kht123';
alter user 'root'@'localhost' identified with mysql_native_password BY 'KHTkht123!';
flush privileges;
create user 'root'@'%' identified with mysql_native_password by 'kht123';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
alter user 'root'@'localhost' identified by 'kht123';
flush privileges;