1. 登陆 1 2 3 4 5 mysql -hlocalhost -u root -p # 如果出现:-bash: mysql: command not found --就执行: # ln -s /usr/local/mysql/bin/mysql /usr/bin --没有出现就不用执行
2. 服务起停 1 2 3 4 5 6 7 8 9 10 11 # 查看mysql状态 service mysql status service mysql start service mysql stop service mysql restart # service mariadb status # service mariadb start # service mariadb stop # service mariadb restart
3. 修改默认配置 官方引用
3.1. 修改字符集 查看字符集:
1 show variables like '%character%' ;
+————————–+—————————-+ | Variable_name | Value | +————————–+—————————-+ | character_set_client | utf8mb3 | | character_set_connection | utf8mb3 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8mb3 | | character_set_server | latin1 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql/charsets/ | +————————–+—————————-+
3.1.1. 通过sql设置全局变量 1 2 3 4 5 SET GLOBAL character_set_client = utf8mb4;SET GLOBAL character_set_connection = utf8mb4;SET GLOBAL character_set_database = utf8mb4;SET GLOBAL character_set_results = utf8mb4;SET GLOBAL character_set_server = utf8mb4;
这种方式我mariadb10.11 测试已经无效了
3.1.2. 通过配置文件设置 mariadb的配置文件在 /etc/my.cnf
和my.cnf.d/
下,文件夹下默认有enable_encryption.preset、mysql-clients.cnf、server.cnf、spider.cnf
mysql的配置文件在/etc/my.cnf
和/etc/mysql/my.cnf
,优先级递减,如果没有找到的话,则需要自己创建一个配置文件(mysql从8.0之后就不包含文件了,但是任然可以自己创建并使用)
引用
mariadb配置文件建议在mysql-clients.cnf、server.cnf
中配置,见Mariadb
MySQL配置文件 /etc/my.cnf 中 4个 核心模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 [client] # MySQL客户端应用模块,只有MySQL附带的客户端应用程序保证可以读取此模块下的内容。 # 客户端 连接 字符集 默认为latin1不支持中文 #default-character-set=utf8 default-character-set=utf8mb4 # 客户端 连接 服务端 默认连接 的端口设置 # port = 3306 # MySQL有两种主要的连接方式: # (1)TCP/IP: mysql -h 192.168.103.67 -uroot -p # (2)socket:客户端 找到 服务端的 mysql.sock文件,以共享文件的方式链接,比TCP快,缺点是: # 客户端 和 服务端 应在一台PC上,依靠本地的.sock文件。 # 如果不在同一台PC上,就没有办法连接了。 # 查看 服务端 mysql.sock文件的位置:show variables like 'socket'\G; # socket = /tmp/mysql.sock [mysqld] # MySQL服务端应用模块 # ========基础配置======== # 表示mysql实例,一般在 集群中用到 # server-id = 1 # MySQL服务程序TCP/IP监听端口(通常用3306) # port = 3306 # 表示MySQL的管理用户 # user = mysql #指定服务器 默认 字符集 character_set_server=utf8mb4 #默认排序规则 collation-server = utf8mb4_unicode_ci # 指定服务器 默认 引擎 default-storage-engine=INNODB # 该参数指定了安装 MySQL 的安装路径,若用到 相对路径 时,以该路径 为基准 # basedir = /usr/local/mysql # 指定了 MySQL 的 数据库文件 放在什么路径下 # datadir = /var/lib/mysql #临时文件目录 # tmpdir=/data/mysql/tmp # 允许访问 mysql服务 的 IP地址 # 如果允许多个,则:bind-address = 139.196.197.138 127.0.0.1 # 允许所有IP,要么如下 写法,OR 注释掉该 配置项 # bind-address = 0.0.0.0 # 密码认证方式 # mysql8 默认的是caching_sha2_password, 老版的默认是 mysql_native_password # default_authentication_plugin=mysql_native_password # ========优化配置======== # 禁用DNS主机名查找,启用以后请求响应快了一半 # skip_name_resolve = 1 # ========度量配置======== #设置 MySQL 实例最大允许的并发连接数。具体来说,它决定了 MySQL 服务器能够同时处理的客户端连接数的上限。 #例如,如果将 max_connections 设置为 500,则 MySQL 服务器一次最多只能处理 500 个客户端连接。 #如果超过这个数目,新的连接请求将被拒绝。需要注意的是,max_connections 的值不应设置得过高, #否则会占用过多的系统资源,导致性能下降或服务器宕机等问题。 #可以使用 ==> SHOW VARIABLES LIKE 'max_connections'; <== 查询 MySQL 当前 max_connections 的设置值: #8核16G的Linux系统上,一般建议将 max_connections 的值设置为500 - 600 左右。 # max_connections=500 # ========度量配置======== # 某台 host 连接错误 次数等于 max_connect_errors(默认10),再次尝试时被屏蔽。 # 可有效防止 dos攻击 # max_connect_errors = 20 # ========事务配置======== # 数据库事务隔离级别 # 1. READ-UNCOMMITTED(读取未提交内容) # 2. READ-COMMITTED(读取提交内容) # 3. REPEATABLE-READ(可重读) ==> 默认 <== # 4. SERIERLIZED(可串行化) # transaction_isolation = REPEATABLE-READ # ========事务配置======== # 日志自动过期清理天数 #expire_logs_days = 90 # 错误日志位置 #log_error = /data/local/mysql-5.7.19/log/mysql-error.log # 是否开启 慢查询 日志收集 #slow_query_log = 1 # 慢查询日志位置 #slow_query_log_file = /data/local/mysql-5.7.19/log/mysql-slow.log # 设置记录慢查询超时时间 #long_query_time = 1 # binlog相关,log-bin 配置表示开启bin_log 查看是否成功使用 show variables like 'log_bin' log-bin=/var/lib/mysql/mysql-bin #server-id=1 # binlog日志有三种格式:Statement、Row以及Mixed。 mysql默认采用statement, #binlog_format=MIXED # expire_logs_days是日志过期时间,这里配置为30天,默认是0,0是永久的意思 #expire_logs_days=30 [mysqld_safe] #指定mysqld_safe进程的配置. #父进程:mysqld_safe——管理mysqld,保证mysqld正常运行,子进程:mysqld——工作进程, 真正对外提供服务;mysqld_safe被杀死后,mysqld依然存在, mysqld被杀死后,mysqld_safe会重启一个mysqld # 错误日志位置 #log-error = /var/log/mysqld.log # 进程id文件 #pid-file = /var/run/mysqld/mysqld.pid [mysql] # mysql以socket方式运行的sock文件位置 # socket=/data/var/mysql/mysql.sock
修改过这里记得要重启,如果为docker容器还需要重启容器,光是重启服务不行
4. SQL执行语句 4.1. 事务相关 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 show variables like 'tx_isolation' ; show variables like 'transaction_isolation' ;set session transaction isolation level read uncommitted;set session transaction isolation level read committed;set session transaction isolation level repeatable read;select tx.trx_id from information_schema.innodb_trx tx where tx.trx_mysql_thread_id = connection_id();begin ;start transaction;start transaction with consistent SNAPSHOT;
5. 日志 1 2 3 4 5 6 7 8 9 10 11 12 SET GLOBAL log_output = 'TABLE' ;SET GLOBAL general_log = 'ON' ; / / 日志开启SET GLOBAL log_output = 'TABLE' ; SET GLOBAL general_log = 'OFF' ; / / 日志关闭show variables like 'general_log' ; / / 查看是否开启show variables like 'general_log_file' ; set global general_log_file= 'tmp/general.lg' ; show variables like 'log_output' ; set global log_output= 'table' ; set global log_output= 'file' ; SELECT * from mysql.general_log ORDER BY event_time DESC ;
innodb_flush_log_at_trx_commit 这个参数设置成 1 的时候,表示每次事务的 redo log 都直接持久化到磁盘。这个参数建议设置成 1,这样可以保证 MySQL 异常重启之后数据不丢失sync_binlog 这个参数设置成 1 的时候,表示每次事务的 binlog 都持久化到磁盘。这个参数建议设置成 1,这样可以保证 MySQL 异常重启之后 binlog 不丢失。