MySQL安装配置
date
Apr 4, 2023
slug
mysqlconfig
status
Published
tags
MySQL
summary
type
Post
以下代码示例是基于MySQL 8.x
一、安装
1、Centos上安装
2、Mac上安装
# 安装
$ brew install mysql
# 启动
$ brew services restart mysql
# 输入root密码,并执行引导式配置
$ mysql_secure_installation
附安装后的内容提示
We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installation
MySQL is configured to only allow connections from localhost by default
To connect run:
mysql -u root
To restart mysql after an upgrade:
brew services restart mysql
Or, if you don't want/need a background service you can just run:
/opt/homebrew/opt/mysql/bin/mysqld_safe --datadir=/opt/homebrew/var/mysql
3、启动
启动
MySQL Server
有2种方式:- 第一种就是读取配置文件进行启动
MySQL Server
- 第二种就是执行
mysqld
的时候,指定其具体参数
配置文件和具体参数其实是一样的,仅仅是优先级的区别。
二、配置
MySQL的配置较多,可通过
mysql -—help
来查看关键的配置项和其当前值。同时也注意到,配置文件有以下几个(以Mac下brew安装方式为例):- /etc/my.cnf
- /etc/mysql/my.cnf
- /opt/homebrew/etc/my.cnf
- ~/.my.cnf
上述文件不存在时,可以手动创建。
1、配置文件
其格式和Windows下的
ini
文件内容格式很像:[server]
...
[mysqld]
...
[mysqld_safe]
...
[client]
...
[mysql]
...
[mysqladmin]
...
对于配置优先级的问题,采用如下规则:
- 若是在命令行指定了配置项,则会覆盖文件的配置项。
- 若在配置文件出现重复项的时候,以最后一项参数为准。重复的命令行配置项时也如此。
2、配置说明
三、权限
1、用户
创建用户
-- 创建用户
create user 'newuser'@'%' identified by 'password';
-- 创建数据库
create database newdb default character set utf8mb4 collate utf8mb4_unicode_ci;
CREATE DATABASE `strapiapp` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 授权用户访问数据库
grant all on newdb.* to 'newuser'@'%';
-- 刷新权限
flush privileges;
删除用户
-- 除删除用户外,DROP USER语句还会从所有授权表中删除所有权限
drop user if exists 'newuser';
修改用户密码
use mysql;
select user, authentication_string, plugin, host from user;
alter user 'root'@'localhost' identified with caching_sha2_password by '123456';
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
flush privileges;
2、备份恢复数据库
mysqldump -u root -h 192.168.18.166 -P 30767 -p db1 > db_dump.txt
mysql -u root -h 192.168.18.189 -P 3337 -p db2 < db_dump.txt
四、概念
hibernate 的 save 方法和 persist 方法的区别
- save:在事务里执行到 save,会向数据库插一条数据,如果事务里异常,会回滚,删除数据库中插入的数据。
- persist:在事务里执行到 persist,不会向数据库插数据,事务 commit 了才会插入数据。
MySQL 8.0:新的身份验证插件(caching_sha2_password)
五、其他
1、Nginx代理转发MySQL
首先通过
nginx -V
确认已包含--with-stream
模块,然后在nginx.conf中添加以下配置# stream配置
stream {
server {
listen 53306;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass 127.0.0.1:3306;
}
}
http {
...
}
stream是和http同等级别的,所以可单独分类管理,如下:
http {
include /etc/nginx/conf.d/*.conf;
}
stream {
include /etc/nginx/conf.d/*.stream;
}
注意,stream是不支持不同域名转发不同MySQL的功能。
2、问题记录
1)支持emoji图标
需要指定使用
utf8mb4
编码,然后重启服务。[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
2)MySQL 8
Public Key Retrieval is not allowed

参考资料: