mysql 8.0.1多实例应用:
安装mysql之后,需要创建多个服务实例。操作方法:启动服务引导新的数据存放目录。
需要需改新的my.cnf文件。
##文件目录都是随意创建的,可根据喜好自行创建。以下参数是需要根据实际的情况去配置的。
user :这边配置使用mysql用户启动,后续启动就不需要添加 --user=mysql命令
port :实列启动后监听的服务端口
server_id:是多个实例的区别。
datadir :数据存放的路径,各个实例需要不一样。
socket: 套接字文件。本地连接会用到(无须定义连接host的具体IP得,只要为空或localhost就可以)
log-error:存放实例启动的日志信息。
pid-file:记录启动实例的进程信息。
这个四个参数需要指定文件存放的路径,若无该目录需要事先创建。
配置文件修改好之后就可以初始化实例了。
初始化命令:
/usr/sbin/mysqld --initialize --basedir=/usr/share/mysql --datadir=/data/mysql3306/data3306 --user=mysql
这边的 --user=mysql初始化,可以换成自建用户如temp 后面就可以在temp用户下启用
不通的数据库版本,初始化命令可能不一样。具体的没有验证过。
–basedir=/usr/share/mysql 数据库安装路径。(默认安装下的路径,奇怪的是通过ps -ef|grep mysql
看,路径是/usr,如果配置上面的路径,会导致sql错误只显示代码,没有具体的错误信息)。
–datadir=/data/mysql3306/data3306 数据库数据存放路径。
启动数据库:
/usr/bin/mysqld_safe --defaults-file=/data/mysql3306/my.cnf
root用户登陆
初始化的时候会生成一个临时密码,在log文件里。
grep 'temporary password' /data/mysql3306/log/mysqld3306.log
配置参数:
log_timestamps=SYSTEM 数据库日志时间打印与系统时间一致,不再是默认的UTC
数据库启动使用非root用户初始化,后续就可以正常使用自建用户去启动数据库;参考连接
https://www.cnblogs.com/parasis/p/9318938.html
记录二:mysql 8.0版本实例化后踩过的坑
- 由于一台机器实例多个mysql服务,新的示例启动后,登陆mysql服务时,习惯的输入 mysql -uroot -pxxxxxx
一直提示密码错误,无限纳闷自闭。
因为sock文件是登陆服务的关键,默认使用的是/var/lib/mysql/mysql.sock文件,新建的示例登录需要这么处理
mysql -uroot -pxxxxx -S /data/mysql.sock (这个sock文件路径与 --defaults-file=/data/mysql3306/my.cnf里的配置一致)。 - mysql8.0以上root密码用户遗忘了重置
方法一:实例启动命令:mysqld --defaults-file=/data/xxxx/my.cnf --skip-grant-tables
方法二:修改配置文件my.cnf ,添加配置:skip-grant-tables
登录mysql后,先重置root用户密码为空,再重启mysql服务
update user set authentication_string = ‘’ where user = ‘root’;
alter user root@‘localhost’ identified by ‘password123’;
这边踩的坑:情景一和情景二在一起出现的时候,你会发现输入mysql命令后,一直提示密码错误,没有跳过密码校验直接登录进去。开始怀疑这个配置是否还有效。。。。/(ㄒoㄒ)/~~