centos7下安装mysql5.7系列

1. mysql安装

环境VMware14.

Centos7.6

1.2下载mysql二进制包

可在命令行直接使用weget下载。

 

二进制包安装方式比较简单,一般我们使用GA版本社区版,即所谓的生产环境版,是经过测试,修复后的版本。

网址如下https://dev.mysql.com/downloads/mysql/

 

 

 

 

 

1.3安装过程

注意:有些linux系统自带maridb数据库请先卸载。

创建好mysql用户和组。并将下载好的mysql包放在/usr/local/目录下

 

[root@CHENYUEXIN ~]# groupadd mysql

[root@CHENYUEXIN ~]# useradd -g mysql mysql -s /sbin/nologin

[root@CHENYUEXIN ~]# echo $?

0

[root@CHENYUEXIN ~]# cd /usr/local/

 

 

 

解压gz

 

 

 

对解压后的文件做软连接,就是为了好看。也方便。

 

 

 

创建mysql目录

 

 

 

 

把以下配置保存,mysql5.7可能没有配置模板,需要自行配置。

vi  /etc/my.cnf

[client]

port=3306

socket=/tmp/mysql.sock

[mysql]

prompt="\u@db \R:\m:\s [\d]>"

no-auto-rehash

[mysqld]

user=mysql

port=3306

basedir=/usr/local/mysql

datadir=/data/mysql/

socket=/tmp/mysql.sock

character-set-server=utf8mb4

skip_name_resolve=1

open_files_limit=65535

back_log=1024

max_connections=512

max_connect_errors=1000000

table_open_cache=1024

table_definition_cache=1024

table_open_cache_instances=64

thread_stack=512K

external-locking=FALSE

max_allowed_packet=32M

sort_buffer_size=4M

join_buffer_size=4M

thread_cache_size=768

query_cache_size=0

query_cache_type=0

interactive_timeout=600

wait_timeout=600

tmp_table_size=32M

max_heap_table_size=32M

slow_query_log=1

slow_query_log_file=/data/mysql/error.log

log-error=/data/mysql/error.log

long_query_time=0.5

server-id=3306100

log-bin=/data/mysql/mysql-binlog

sync_binlog=1

binlog_cache_size=4M

max_binlog_cache_size=1G

max_binlog_size=1G

expire_logs_days=7

master_info_repository=TABLE

relay_log_info_repository=TABLE

gtid_mode=on

enforce_gtid_consistency=1

log_slave_updates

binlog_format=row

relay_log_recovery=1

relay-log-purge=1

key_buffer_size=32M

read_buffer_size=8M

read_rnd_buffer_size=4M

bulk_insert_buffer_size=64M

 

lock_wait_timeout=3600

explicit_defaults_for_timestamp=1

innodb_thread_concurrency=0

innodb_sync_spin_loops=100

innodb_spin_wait_delay=30

transaction_isolation=REPEATABLE-READ

innodb_buffer_pool_size=1024M

innodb_buffer_pool_instances=8

innodb_buffer_pool_load_at_startup=1

innodb_buffer_pool_dump_at_shutdown=1

innodb_data_file_path=ibdata1:1G:autoextend

innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=32M

innodb_log_file_size=2G

innodb_log_files_in_group=2

innodb_io_capacity=2000

innodb_io_capacity_max=4000

innodb_flush_neighbors=0

innodb_write_io_threads=8

innodb_read_io_threads=8

innodb_purge_threads=4

innodb_page_cleaners=4

innodb_open_files=65535

innodb_max_dirty_pages_pct=50

innodb_flush_method=O_DIRECT

innodb_lru_scan_depth=4000

innodb_checksum_algorithm=crc32

innodb_lock_wait_timeout=10

innodb_rollback_on_timeout=1

innodb_print_all_deadlocks=1

innodb_file_per_table=1

innodb_online_alter_log_max_size=4G

internal_tmp_disk_storage_engine=InnoDB

innodb_stats_on_metadata=0

innodb_status_file=1

innodb_status_output=0

innodb_status_output_locks=0

performance_schema=1

performance_schema_instrument='%=on'

innodb_monitor_enable="module_innodb"

innodb_monitor_enable="module_server"

innodb_monitor_enable="module_dml"

innodb_monitor_enable="module_ddl"

innodb_monitor_enable="module_trx"

innodb_monitor_enable="module_os"

innodb_monitor_enable="module_purge"

innodb_monitor_enable="module_log"

innodb_monitor_enable="module_lock"

innodb_monitor_enable="module_buffer"

innodb_monitor_enable="module_index"

innodb_monitor_enable="module_ibuf_system"

innodb_monitor_enable="module_buffer_page"

innodb_monitor_enable="module_adaptive_hash"

[mysqldump]

quick

max_allowed_packet=32M

 

把相关目录的用户和组属性划到mysql

 

 

 

进入到 /usr/local/mysql/bin/下进行最后一步的也就是初始化了命令如下

 ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/ --user=mysql --initialize

 

在此过程中如果出现报错,要去查看/data/mysql/error.log的错误日志查看,不要局限于这个日志,如果是与系统相关,可能需要查看,上面的初始化参数--initialize表示生成一个初始化密码,会记录在log-error里面。如果是--initialize-insecure表示无密码,可随意登录。

 

启动成功后执行

cat /data/mysql/error.log |grep passwd

如下图显示红框内为初始化密码。

 

 

 

到这里,还需要配置全局变量,这样才能使用mysql命令登录数据库

编辑

vim  ~/.bash_profile ,将mysqlbin目录加入到PATH后面即可

然后source  ~/.bash_profile

 

 

 

此时就可以使用mysql在任意目录登录了

 

 

 

 

 

2.mysql密码丢失问题

如果忘记密码可以通过添加--skip-grant-tables参数来解决,如下操作

 

 

 

 

 

此时直接执行mysql无密码登录

 

然后根据前面的方式增加密码授权。

 

然受停止数据库,再次使用./mysqld_safe --defaults-file=/etc/my.cnf & 启动即可

 

如下图可以看到使用mysql命令是无法登录了,再次使用密码登录即可。

 

 

 

 

3启动与停止mysql

 

这个只需要将support-files/mysql.server复制到/etc/init.d目录下,并改名为mysqld,如下图所示

 

 

 

 

 

 

启动则执行 /etc/init.d/mysqld start,停止则执行/etc/init.d/mysqld stop

 

3.2 mysql的连接方式

windows端常用的连接工具有sqlyog,navicat

一般说的是在linux下连接mysql,第一种为TCP/IP方式,另外就是socket方式。

一般使用TCP/IP,常见的模板如:

mysql -u username -p password -P port -h IP

通过TCP/IP方式连接的时候,mysql会检查一张权限表,判断客户端IP是否被允许连接到mysql,此表为mysql库下的user表。

Unix socket连接方式并不是网络协议,一般在客户端和实例在同一台服务器使用,一般文件路径为sock=/tmp/mysql.sock.

mysql -u username -p password -S /tmp/mysql.sock

 

 

 

 

 

 

3.3用户权限管理

mysql数据库的账户安全性是十分重要的,数据库环境一般为测试环境和生产环境。账号权限一定要分配合理,规范。

查看用户情况,可以看见有三个。

 

 

 

在创建测试用户时,一般是专库账号,不能出现一个账号管理多个数据库,如果库特别多则看情况处理。

创建用户格式:

create user 用户名@主机IP  identified by  密码;

授权

grant select on erp.* to erp_read@192.168.56.%  identified by erp123;

表示允许192.168.56.0段的ip并且用户是erp_read,且只能访问数据库erp,权限为查看,密码为erp123.

flush privileges;刷新权限

posted @ 2021-11-12 13:14  头发重要  阅读(139)  评论(0)    收藏  举报