2021-10-19

mysql8 数据库安装操作

第一次安装,遇到很多坑,记录一下



前言

环境:centos7 Linux服务器
使用的yum 命令安装

一、更新一 yum

yum update

二、查看是否有安装过mysql

rpm -qa | grep -i mysql
//如果安装过其他版本的可以先删除
yum -y remove MySQL-*
//或者一一删除 依次执行 yum remove 包名 例如:
yum remove mysql-community-client-8.0.22-1.el7.x86_64
//查找mysql相关目录
find / -name mysql
//依次删除得到的目录:例如:
rm -rf /var/libmysql
// 删除配置文件:
rm -rf /etc/my.cnf
// 删除/var/log/mysqld.log(如果不删除这个文件,会导致新安装的mysql无法生存新密码,导致无法登陆)
rm -rf /var/log/mysqld.log

三、开始安装mysql

// 下载yum,MySQL8源:wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
//安装yum源: 
yum -y install mysql80-community-release-el7-1.noarch.rpm
//开始安装MySQL: 
yum install -y install mysql-community-server
//安装完成先修改配置文件(这个很重要,被坑的很惨,尤其是大小写敏感的问题)
vi  /etc/my.cnf
//大小写敏感去除:1 不敏感  0 敏感(默认);这个一但mysql启动过就再也修改不了,必须第一次安装未启动前修改
//windows和linux不同,这里记录一下
//windows
lower_case_table_names=2
//linux
lower_case_table_names=1

//启动mysql: 
systemctl start mysqld
//查看服务状态:
systemctl status mysqld
//查看mysql的开机启动项目:
systemctl list-unit-files |grep mysql
//查看日志查看密码
less /var/log/mysqld.log 

三、安装mysql遇到的问题,修改mysql配置

vi  /etc/my.cnf

// only_full_group_by的解决办法
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

// 权限不够修改
setenforce 0

// 找不到密码,可以修改配置文件跳过
skip-grant-tables

//因为mysql8安装完成的服务名称是mysql80,我删除服务重新改成了mysql,习惯敲这个
//停掉mysql
net stop mysql80
//删除MySQL服务:
mysqld --remove mysql
//删除MySQL80服务:
mysqld --remove mysql80
//重新安装MySQL服务:
mysqld --initialize-insecure --user=mysql
//注册服务:
mysqld --install mysql

// mysql8的密码策略很操蛋,更改密码始终不过,所有嘿嘿嘿
mysql -u root -p
use mysql;
//密码安全策略(强度):
set global validate_password.policy=LOW;
//修改密码:
ALTER user 'root'@'localhost' IDENTIFIED BY '你的新密码';
//远程访问设置:
update user set host = '%' where user= 'root';
// 查看端口,用户等等信息
select host, user, authentication_string, plugin from user;
//刷新修改操作
flush privileges;
//修改MySQL8的密码策略:如果你使用的navcat 连接数据的话,建议你修改成 mysql_native_password
alter user 'root'@'%' identified with mysql_native_password by '你的密码';

//创建用户分配权限
CREATE USER '新用户名'@'%' IDENTIFIED BY '密码';
// 可以创建,修改,删除表和增删改查的权限
grant create,alter,drop,select,insert,update,delete on *.* to 新用户名@'%';
// 只有增删改查的权限
grant select,insert,update,delete on *.* to 新用户名@'%';

// 设置连接数和有效活动时间 如果你不想出现 mysql too many connections 的问题,建议你设置一下
max_connections=1000		set persist max_connections=1000;
max_user_connections=500
wait_timeout=1800    		set persist wait_timeout=1800;
interactive_timeout=1800  	set persist interactive_timeout=1800;

四、数据库调优和备份

//数据库备份
mysqldump -u root -p 你的库名 > /opt/你的库名.sql
//mysql调优 这里是我抄的别人的
[client]
user=   
password=    

[mysqld]
########basic settings########
server-id = 11 
port = 3306
user = mysql
bind_address =  
autocommit = 0
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 800
max_connect_errors = 1000
datadir = /data/mysql_data
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728
tmp_table_size = 67108864
tmpdir = /tmp
max_allowed_packet = 16777216
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800
wait_timeout = 1800
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
########log settings########
log_error = error.log
slow_query_log = 1
slow_query_log_file = slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
long_query_time = 2
min_examined_row_limit = 100
########replication settings########
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
sync_binlog = 1
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
binlog_format = row 
relay_log = relay.log
relay_log_recovery = 1
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
innodb_page_size = 8192
innodb_buffer_pool_size = 12G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_log_group_home_dir = /redolog/
innodb_undo_directory = /undolog/
innodb_undo_logs = 128
innodb_undo_tablespaces = 3
innodb_flush_neighbors = 1
innodb_log_file_size = 4G
innodb_log_buffer_size = 16777216
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 67108864 
########semi sync replication settings########
plugin_dir=/usr/local/mysql/lib/plugin
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000

[mysqld-5.7]
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on

最后有个工具也可以用来调优mysql

// 以下的操作个人尝试了一下,对于小白的我来说,提供的建议已经够用了
使用Mysqltuner
Mysqltuner是一个高性能的MySQL调优Perl脚本,
它提供了MySQL服务器健康状态的快照,并为提高性能、稳定性和效率提供了具体的建议。
// 可以使用 yum安装
yum install -y epel-release
yum install -y mysqltuner

使用Mysqltuner优化

运行以下命令来优化您的MySQL

mysqltuner

您将被要求输入您的MySQL管理用户名和密码

运行命令后,mysqltuner将建议更改一些配置来优化您的MySQL服务器。

您可以更改配置文件/etc/my.cnf根据你的建议。然后重启MySQL服务。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值