网站首页 > 博客文章 正文
一、安装说明
本文使用二进制包安装及简单配置MySQL-v8.0.24版本。
8.0版本下载:https://dev.mysql.com/downloads/mysql/
本文中使用本地VM虚机部署测试。
OS:CentOS Linux release 7.8.2003 (Core) 3.10.0-1160.15.2.el7.x86_64
虚机配置:2核CPU、4G内存
二、清理系统环境
CentOS 7 版本的系统默认自带安装了MariaDB,需要先清理。
## 查询已安装的mariadb
rpm -qa |grep mariadb
## 卸载mariadb包,文件名为上述命令查询出来的文件
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64
三、创建mysql用户.组及数据目录
## 创建数据保存目录
mkdir -p /data/mysql
## 创建用户组mysql
groupadd -r mysql
## 创建用户mysql并设置不能登录系统,指定宿主目录
useradd -g mysql -r -s /sbin/nologin -M -d /data/mysql mysql
## 修改数据保存目录属性及权限
chown mysql.mysql /data/mysql
chmod 0700 /data/mysql
四、安装MySQL
1.下载二进制包
cd /data/tools
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
2.解压安装到指定目录(/usr/local)
tar xf mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
cd /usr/local
## 创建软链接,方便后续操作
ln -sv mysql-8.0.24-linux-glibc2.12-x86_64 mysql
五、配置MySQL
1.创建配置文件
vi /etc/my.cnf
//输入以下内容
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock
default-character-set=utf8mb4
[mysqld]
port = 3306
user = mysql
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
lower_case_table_names = 1
skip-external-locking
skip-name-resolve
server-id = 1
transaction_isolation = REPEATABLE-READ
explicit_defaults_for_timestamp = true
thread_stack = 512K
external-locking = FALSE
gtid_mode = ON
enforce_gtid_consistency = ON
##最大连接数
max_connections=5000
max_connect_errors = 1000
back_log = 300
##二进制日志
log-bin = /data/mysql/mysql-bin
binlog_format = ROW
binlog_row_image = FULL
binlog_expire_logs_seconds = 0
binlog_cache_size=16M
max_binlog_cache_size=1G
max_binlog_size=512M
sync_binlog = 1
##慢日志
slow_query_log = on
slow_query_log_file = /data/mysql/db-slow.log
long_query_time = 1
log_slow_admin_statements = 1
#作为从库时生效
log_slow_slave_statements = 1
log-queries-not-using-indexes=0
log_throttle_queries_not_using_indexes=60
##缓冲区
table_open_cache = 600
table_definition_cache = 700
table_open_cache_instances = 64
max_allowed_packet = 32M
sort_buffer_size = 16M
join_buffer_size = 8M
tmp_table_size = 64M
max_heap_table_size = 64M
##对MyISAM表起作用
key_buffer_size = 128M
read_buffer_size = 8M
read_rnd_buffer_size = 32M
bulk_insert_buffer_size = 64M
thread_cache_size = 16
##主从复制配置
log_slave_updates=1
relay-log = /data/mysql
relay-log-recovery=on
##innodb性能设置
default_storage_engine = InnoDB
innodb_thread_concurrency = 0
innodb_buffer_pool_size = 1G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_buffer_size = 16M
innodb_log_files_in_group = 3
innodb_log_file_size = 512M
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 1G
#innodb_undo_directory = /data/mysql_logs/undolog
##CPU多核处理能力设置
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_purge_threads = 2
innodb_page_cleaners = 2
innodb_open_files = 65535
innodb_max_dirty_pages_pct = 50
innodb_lock_wait_timeout = 60
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_autoinc_lock_mode = 1
innodb_file_per_table = on
innodb_flush_log_at_trx_commit = 1
##设置时区
default_time_zone = "+8:00"
##超时时间
interactive_timeout = 3600
wait_timeout = 3600
sql_mode = NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES
[mysqldump]
quick
max_allowed_packet = 64M
[mysql]
no-auto-rehash
default-character-set=utf8mb4
[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 64M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
log-error = /data/mysql/mysql_err.log
pid-file = /data/mysql/mysqld.pid
注:请根据实际环境需求修改参数,此处配置仅供参考。
注意:my.cnf配置文件中若要指定binlog及relay-bin等日志目录路径不能在datadir目录下,否则初始化时会报错。因为初始化是datadir目录需为一个空目录。此文档my.cnf配置文件中去掉binlog及relay-bin日志目录设置。
## 创建日志目录并修改权限
mkdir -p /data/mysql_logs/{binlog,relay-bin,undolog}
chown -R mysql.mysql /data/mysql_logs
2.权限设置
cd /usr/local/mysql
chown -R mysql:mysql .
3.初始化数据库
初始化方法一:
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
初始化方法二:
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql
注:①"--initialize"会生成一个随机密码(~/.mysql_secret),而"--initialize-insecure"不会生成密码
②--datadir目标目录下不能有数据文件
## 开启SSL连接,安全性提高了,但是相对地降低了QPS,还是比较影响性能的,谨慎选择!本文档中不开启!
/usr/local/mysql/bin/mysql_ssl_rsa_setup
4.安装MySQL的man帮助文件、头文件及lib库
cd /usr/local/mysql
## 帮助文件
echo "MANPATH /usr/local/mysql/man" >> /etc/man.config
## 头文件
ln -sv /usr/local/mysql/include /usr/include/mysql
## lib库
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
## 加载动态库文件
ldconfig
5.配置MySQL环境变量,方便操作命令的使用
echo '######MySQL' >> /etc/profile
echo 'PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
6.配置MySQL服务启动命令
cd /usr/local/mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
7.启动数据库
/etc/init.d/mysqld start
/usr/local/mysql/bin/mysql --version && echo -e "\e[31m mysql install is OK\e[0m"
六、设置root账号密码
在MySQL 8.0.4前,执行:SET PASSWORD=PASSWORD(‘[新密码]’);但是MySQL8.0.4开始,这样是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。可在配置文件my.cnf中使用选项“default_authentication_plugin = mysql_native_password”修改默认使用的密码插件认证为‘mysql_native_password’
①使用caching_sha2_password认证方式
## 设置本机登录密码
mysql -uroot -p
//因初始化数据时没有设置密码,可以按两次确认键进入数据库
mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;
## 设置远程密码
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
②使用mysql_native_password认证方式
## 设置本机登录密码
mysql -uroot -p
//因初始化数据时没有设置密码,可以按两次确认键进入数据库
mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> FLUSH PRIVILEGES;
## 远程登录密码
mysql> CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
七、服务管理
启动:/etc/init.d/mysqld start
关闭:/etc/init.d/mysqld stop
重启:/etc/init.d/mysqld restart
查看状态:/etc/init.d/mysqld status
配置开机启动:echo "/etc/init.d/mysqld start" >> /etc/rc.local
八、测试
1.创建测试数据库
mysql -uroot -p
//输入上述步骤中设置的密码登录数据库
mysql> CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
mysql> show databases;
2.创建普通用户及授权
mysql -uroot -p
//输入上述步骤中设置的密码登录数据库
## 切换至mysql库
mysql> use mysql;
## 创建用户
mysql> CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'Pass@123';
## 授权
mysql> GRANT select,insert,update,delete,create on test.* to 'test'@'%' ;
## 刷新权限
mysql> FLUSH PRIVILEGES;
## 查看用户
mysql> select user,host from user;
## 查看test用户权限
mysql> show GRANTS for 'test'@'%';
猜你喜欢
- 2024-09-10 解决Navicat连接 Mysql 8 出现1251- Client does not support错误
- 2024-09-10 win10安装mysql遇到的坑(win10安装mysql5.5)
- 2024-09-10 Win10+docker+Laradock(下篇):Docker的基本操作与项目开发配置
- 2024-09-10 为Debezium配置MySQL单机版(mysqld 指定配置文件)
- 2024-09-10 Java 连接 MySQL 8.0 排错案例-爱可生
- 2024-09-10 MySQL数据库下载、安装、配置、卸载
- 2024-09-10 不要再原地踏步了,升级到 MySQL 8.x 的 6 大理由!
- 2024-09-10 Django + MySQL 8 开发环境用 Docker来部署
- 2024-09-10 【每日一学】数据库大揭秘:MySQL 事务学习手册,精通数据操作!
- 2024-09-10 MySQL性能基准测试对比:MySQL 5.7与MySQL 8.0
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 356℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)