mysql glibc2.12_ARCH+mysql-8.0.21-linux-glibc2.12 安装配置史前巨坑-连接不上数据库

前两天装ARCH被工控机主板(硬件)坑了一把。

这两天搞MYSQL8又差点被搞疯。

1,安装

---------------------官方手册的安装说明---------------------

#mv mysql-8-0.xxxx /usr/local/mysql //将下载的集合包解压到/usr/local/mysql下

#cd /usr/local/mysql //转到mysql目录下

#mkdir data //创建数据库文件目录 官方建议权限750

#chown mysql:mysql data //赋予mysql用户所属权限

#groupadd mysql //创建 mysql 用户组

#useradd -M -r -g mysql //创建mysql 不创建用户目录,用户归属于mysql组

#pacman -S libaio //安装依赖包

#pacman -S numactl //安装依赖包

#bin/mysqld --initialize-insecure --user=mysql //空密码初始化

#bin/mysql_ssl_rsa_setup //安装ssl加密文件

#bin/mysqld_safe --user=mysql & //启动mysql

默认路径--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

正常顺利的情况下,由于是空密码,所以执行mysql -u root 就可以直接进入数据库了.

2,自定义配置mysql服务器参数

#vim /etc/my.cnf

--------------------------------

##下面是配置文件肉容##

--------------------------------

[mysqld]

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

pid-file = /usr/local/mysql/data/mysqld.pid

bind-address = 0.0.0.0 //开启IPV4监听

socket = /var/tmp/mysql.sock

init-connect='SET NAMES UTF8MB4'

character-set-server = UTF8MB4

lower_case_table_names = 0

default_authentication_plugin=mysql_native_password

back_log = 1024

max_connections = 512

max_connect_errors = 10000

expire_logs_days = 30

max_allowed_packet = 16M

binlog_cache_size = 5M

max_heap_table_size = 32M

tmp_table_size = 32M

sort_buffer_size = 8M

join_buffer_size = 8M

ft_min_word_len = 4

thread_stack = 254K

thread_cache_size = 10

log-bin=master-bin

binlog-format=ROW

log-error=/var/log/mysqld_err.log

slow_query_log = 1

slow-query-log-file = /var/log/mysql_slow.log

long_query_time = 1

server-id = 1

replicate-ignore-db=test

replicate-wild-ignore-table=test.%

replicate-ignore-db=mysql

replicate-wild-ignore-table=mysql.%

skip-slave-start

log_slave_updates

wait_timeout = 28800

interactive_timeout = 28800

skip-name-resolve=1

skip-external-locking

default-storage-engine = InnoDB

transaction_isolation = REPEATABLE-READ

innodb_buffer_pool_size = 32M

innodb_strict_mode = 1

innodb_file_per_table = 1

innodb-open-files = 512

innodb_write_io_threads=4

innodb_read_io_threads=4

innodb_thread_concurrency = 0

innodb_io_capacity=1000

innodb_flush_log_at_trx_commit = 1

innodb_log_buffer_size = 2M

innodb_log_file_size = 16M

innodb_log_files_in_group = 3

innodb_adaptive_flushing = 1

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

innodb_fast_shutdown = 0

innodb_flush_method = O_DIRECT

innodb_stats_on_metadata = 0

innodb_buffer_pool_instances = 8

sysdate-is-now

performance_schema

auto_increment_offset=1

auto_increment_increment=2

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

default-character-set=UTF8MB4

pager=more

no-auto-rehash

socket = /var/tmp/mysql.sock

[myisamchk]

key_buffer = 16M

sort_buffer_size = 16M

read_buffer = 8M

write_buffer = 8M

[mysqlhotcopy]

interactive-timeout=28800

[mysqld_safe]

open-files-limit =1024

user = mysql

[clinet]

port = 3306

socket = /var/tmp/mysql.sock

default-character-set=UTF8MB4

当这一切都配置好了,最后就可以使用support-files/mysql.server脚本来启动了.

#usr/local/mysql/support-file/mysql.server start //restart /stop 一共三个参数可用

安装过程中需注意一些目录权限问题,尤其是日志及pid存放文件夹的权限.

最后一步,也就是遇到巨坑的一步,当我把mysql.server 脚本加入到系服务启动后,一切都变得鬼异起来.之前好好的数据库突然就连接不上了.

[root@archlinux ~]# mysql -u root -p

Enter password:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/tmp/mysql.sock'

#ps -A|grep mysql //检查MYSQL服务明明mysqld/mysqld_safe两个进程都已经启动了

最先开始怀疑自己密码记错了,但怎么尝试都不行,顺便说一下,mysql8丢失密码的解决办法我还没找到.虽然可以使用#mysqld_safe --skip-grant-tables & 跳过验证,然后用空密码进入,但进去后没有权限进行增删改操作,所以......

最后不得已,重新初始化了一下初据库,刚开始一切很正常,可以连接了,我开心的相当然以为我之前就是密码输错了.

然而当我改完密码,又重新用新密码"111111"确认连接成功后,我放心的重启了一下系统,然后发现,又TM连不上了......瞬间石化,好在这下可以排除密码不对这一项了.

于是上网查资料,翻手册,从改配置(my.cnf),到更改数据库的密码加密方式,再到连接方式,甚至最后都开始怀疑这个版本数据库不稳定了,吓得我都对mysql失去信心了.有那么一会儿我都怀疑上硬件了...

好在苍天有眼,经过了两天的折磨后,总于在又一次初始化完后让我抓住了关键点:

即我初始化完是手动执行mysql.server 启动,然后连接正常.

当我配置好后,将mysql.server脚本 引入mysql.service 服务中:

mysql.service文件内容:

[Unit]

Description="Mysql"

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/mysql/mysql.server start

ExecReload=/usr/local/mysql/mysql.server restart

ExecStop=/usr/local/mysql/mysql.server stop

PrivateTmp=true

TimeoutSec=0

[Install]

在将其加入系统服务中

#systemctl enable mysql //加入系统服务

#systemctl start mysql //启动

#mysql -u root -p

Enter password:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/tmp/mysql.sock'

最终确定问题出在系统服务启动mysql.server脚本导致无法连接的问题.

虽然尝试过自己写脚本封装mysql.server/mysqld_safe 但都无法加入系统服务启动.

暂时还没有想到好的解决方案,等过两天试试Redhat/Ubuntu看看有没有问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值