MYSQL二进制安装(8.4.10)

📅 2026/7/1 18:27:54
MYSQL二进制安装(8.4.10)
前提ldd --version 看glibc版本版本一定要大于下载的 glibc环境LinuxRockyLinux 9.6MySQL8.4.10 LTS上传软件//下载软件的时候注意匹配下系统版本的glic[rootmysql ~]# ldd --versionldd(GNU libc)2.34Copyright(C)2021Free Software Foundation, Inc.[rootmysql ~]# cd /mysql/app/[rootmysql app]# lsmysql-8.4.10-linux-glibc2.28-x86_64.tar.xz卸载mariadbyum remove-ymariadb创建用户组目录注意CentOS 7图形化版本里面默认会自动创建mariadb服务mysql组和mysql用户[rootzc app]# getent passwd | grep mysqlmysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin如果最小化安装 默认不会创建mysql用户和组手动创建[rootserver app]# groupadd mysql//-r表示系统用户[rootserver app]# useradd -r -g mysql -s /sbin/nologin mysql创建要用到的对应目录//放安装包的目录mkdir-p/mysql/app //mkdir-p/mysql/data/3306/datamkdir-p/mysql/log/3306/binlogmkdir-p/mysql/log/3306/relaylogmkdir-p/mysql/backup/backup-dbmkdir-p/mysql/backup/backup-tmpmkdir-p/mysql/backup/backup-binlogchown-Rmysql.mysql /mysql解压并创建软链接//解压[rootserver app]# tar -xf mysql-8.4.10-linux-glibc2.28-x86_64.tar.xz//创建软链接[rootserver app]# ln -s mysql-8.4.10-linux-glibc2.28-x86_64 mysql[rootserver app]# lsmysql mysql-8.4.10-linux-glibc2.28-x86_64 mysql-8.4.10-linux-glibc2.28-x86_64.tar.xz设置环境变量[rootserver app]# cat ~/.bash_profile.bash_profile#Get the aliases and functionsif[-f ~/.bashrc];then.~/.bashrc fi User specific environment and startup programs PATH$PATH:/mysql/app/mysql/bin:$HOME/bin export PATH export LANGen_US//加载环境变量[rootserver app]# source ~/.bash_profile//查看[rootserver app]# which mysql/mysql/app/mysql/bin/mysql配置参数文件/mysql/data/3306/my.cnf[rootserver app]# cd /mysql/data/3306/[rootserver 3306]# lsdata///mysql/data/3306/[rootserver 3306]# vim my.cnf//配置文件 注意修改ip和对应目录[rootserver 3306]# cat my.cnf[client]port3306 socket /mysql/data/3306/mysql.sock[mysql]no-beep prompt\umysqldb \R:\m:\s [\d] #no-auto-rehashauto-rehash default-character-setutf8[mysqld]########basic settings########server-id3306 port3306 user mysql bind_address 192.168.141.148 basedir/mysql/app/mysql datadir/mysql/data/3306/datasocket /mysql/data/3306/mysql.sock pid-file /mysql/data/3306/mysql.pid character-set-serverutf8 autocommit 0#skip_name_resolve 1max_connections 800 max_connect_errors 1000 default-storage-engineINNODB transaction_isolation READ-COMMITTEDexplicit_defaults_for_timestamp 1 sort_buffer_size 32M join_buffer_size 128M tmp_table_size 72M max_allowed_packet 16M#sql_mode STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USERinteractive_timeout 1800 wait_timeout 1800 read_buffer_size 16M read_rnd_buffer_size 32M#query_cache_type 1#query_cache_size1Mtable_open_cache2000 thread_cache_size768 myisam_max_sort_file_size10G myisam_sort_buffer_size135M key_buffer_size32M read_buffer_size8M read_rnd_buffer_size4M back_log1024#flush_time0open_files_limit65536 table_definition_cache1400#binlog_row_event_max_size8K#sync_master_info10000#sync_relay_log10000#sync_relay_log_info10000########log settings########log-outputFILE general_log 0 general_log_file/mysql/log/3306/hiri-general.err slow_query_log ON slow_query_log_file/mysql/log/3306/hiri-query.err long_query_time10 log-error/mysql/log/3306/hiri-error.err log_queries_not_using_indexes 1 log_slow_admin_statements 1 log_slow_slave_statements 1 log_throttle_queries_not_using_indexes 10#expire_logs_days 90#binlog_expire_logs_seconds2592000binlog_expire_logs_seconds604800 min_examined_row_limit 100 log_bin/mysql/log/3306/binlog/hiri-binlog log_bin_index/mysql/log/3306/binlog/hiri-binlog.index binlog_formatROWbinlog_rows_query_log_eventson########replication settings#########master_info_repository TABLE#relay_log_info_repository TABLE#log_bin bin.log#sync_binlog 1#gtid_mode on#enforce_gtid_consistency 1#log_slave_updates#binlog_format row#relay_log relay.log#relay_log_recovery 1#binlog_gtid_simple_recovery 1#slave_skip_errors ddl_exist_errors########innodb settings########innodb_io_capacity 4000 innodb_io_capacity_max 8000 innodb_buffer_pool_size 500M innodb_buffer_pool_instances 8 innodb_buffer_pool_load_at_startup 1 innodb_buffer_pool_dump_at_shutdown 1 innodb_lru_scan_depth 2000 innodb_lock_wait_timeout 5#innodb_flush_method O_DIRECTinnodb_log_file_size 200M innodb_log_files_in_group 2 innodb_log_buffer_size 16M#innodb_undo_logs 128innodb_undo_tablespaces 3 innodb_undo_log_truncate 1 innodb_max_undo_log_size 2G innodb_flush_neighbors 1 innodb_purge_threads 4#innodb_large_prefix 1innodb_thread_concurrency 64 innodb_print_all_deadlocks 1 innodb_strict_mode 1 innodb_sort_buffer_size 64M innodb_flush_log_at_trx_commit1 innodb_autoextend_increment64 innodb_concurrency_tickets5000 innodb_old_blocks_time1000 innodb_open_files65536 innodb_stats_on_metadata0 innodb_file_per_table1 innodb_checksum_algorithm0 innodb_data_file_pathibdata1:200M;ibdata2:200M;ibdata3:200M:autoextend:max:5G innodb_temp_data_file_path ibtmp1:200M:autoextend:max:20G innodb_buffer_pool_dump_pct 40 innodb_page_cleaners 4 innodb_purge_rseg_truncate_frequency 128 binlog_gtid_simple_recovery1 log_timestampssystem初始化数据库//提前创建/mysql/log/3306/hiri-error.err文件 以免后面初始化报错[rootserver 3306]# vim /mysql/log/3306/hiri-error.err//给相应权限[rootserver 3306]# chown -R mysql.mysql /mysql//注意卡顿一下 才是正常的/mysql/app/mysql/bin/mysqld--defaults-file/mysql/data/3306/my.cnf--initialize--usermysql--basedir/mysql/app/mysql--datadir/mysql/data/3306/data修改密码//临时用命令启动数据库 注意这个进程号[rootserver 3306]# /mysql/app/mysql/bin/mysqld_safe --defaults-file/mysql/data/3306/my.cnf --datadir/mysql/data/3306/data --pid-file/mysql/data/3306/mysql.pid [1]12745[rootserver 3306]# 2026-06-29T04:01:07.221662Z mysqld_safe Logging to /mysql/log/3306/hiri-error.err.2026-06-29T04:01:07.241007Z mysqld_safe Starting mysqld daemon with databasesfrom/mysql/data/3306/data//查看临时密码 8qiurjARKyP[rootserver 3306]# cat hiri-error.err2026-06-29T11:59:19.62928608:00 0[Warning][MY-013242][Server]--character-set-server:utf8is currently an aliasforthe charactersetUTF8MB3,but will be an aliasforUTF8MB4 in a future release.Please considerusingUTF8MB4 in order to be unambiguous.2026-06-29T11:59:19.63582208:00 0[Warning][MY-013267][InnoDB]The setting INNODB_UNDO_TABLESPACES is deprecated and is no longer used.InnoDB always creates 2 undo tablespaces tostartwith.Ifyou need more,please use CREATE UNDO TABLESPACE.2026-06-29T11:59:19.63595908:00 0[Warning][MY-013907][InnoDB]Deprecated configuration parameters innodb_log_file_size and/or innodb_log_files_in_group have been used to compute innodb_redo_log_capacity419430400.Please use innodb_redo_log_capacity instead.2026-06-29T11:59:19.63740608:00 1[System][MY-013576][InnoDB]InnoDB initialization has started.2026-06-29T11:59:20.57572608:00 1[System][MY-013577][InnoDB]InnoDB initialization has ended.2026-06-29T11:59:21.17144708:00 6[Note][MY-010454][Server]A temporary password is generatedforrootlocalhost: 8qiurjARKyPmysql -uroot -p -S /mysql/data/3306/mysql.sock -S干嘛的-S或长选项 --socket用于指定 MySQL 客户端连接时使用的 Unix 套接字文件socket file路径。简单来说它告诉 mysql 命令“不要通过 TCP/IP 网络去连而是去这个文件路径下找本地服务的‘门’通过这个门进去。”MySQL 的套接字文件通常放在 /var/lib/mysql/mysql.sock 或 /tmp/mysql.sock。但你的命令指定了 /mysql/data/3306/mysql.sock所以要特点指定路径//临时用命令启动数据库[rootserver3306]# /mysql/app/mysql/bin/mysqld_safe --defaults-file/mysql/data/3306/my.cnf --datadir/mysql/data/3306/data --pid-file/mysql/data/3306/mysql.pid [2]13931[rootserver3306]# 2026-06-29T04:08:20.422795Z mysqld_safe Logging to /mysql/log/3306/hiri-error.err.2026-06-29T04:08:20.441437Z mysqld_safe A mysqld process already exists //登录[rootserver3306]# mysql -uroot -p -S /mysql/data/3306/mysql.sockEnter password: Welcome to the MySQL monitor. Commands end with;or\g. Your MySQL connectionidis8Server version:8.4.10 Copyright(c)2000,2026, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Typehelp;or\hforhelp. Type\ctoclearthe current input statement. mysqlexitBye当然这里注意登录的时候用了-S来手工指定sock文件路径如果不想手工指定可以手工创建一个软链接这样就可以用临时密码直接登录。因为mysql默认会去/tmp下找这个文件。[rootserver3306]# ln -s /mysql/data/3306/mysql.sock /tmp/mysql.sock[rootserver3306]# mysql -uroot -p1.登录数据库后修改[rootserver3306]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with;or\g. Your MySQL connectionidis10Server version:8.4.10 Copyright(c)2000,2026, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Typehelp;or\hforhelp. Type\ctoclearthe current input statement. mysqlalter user rootlocalhost identified by205228;Query OK,0rows affected(0.01sec)mysql2.不登录数据库 直接用mysqladmin改密码[rootzc3306]# mysqladmin -uroot -pZ8knGH_fGQ password redhat3306 -S /mysql/data/3306/mysql.sockmysqladmin:[Warning]Using a password on thecommandline interface can be insecure. Warning: Since password will be sent to serverinplain text, use ssl connection to ensure password safety.远程登录配置MySQL 把 ‘root’‘localhost’ 和 ‘root’‘%’ 看作两个完全不同的账号。8.0版本以前dentified by 和with grant option可以一起使用但是在8.0版本中已经无法放在一起使用了。grant all privileges on*.*toroot%identified byredhat3306with grant option;//刷新权限 flush privileges;8.0版本以后//要现有用户才能授权把授权和设密码拆成了两个语句‌shell//首先执行授权语句GRANT ALL PRIVILEGES ON.TO ‘root’‘%’ WITH GRANT OPTION;//接着设置密码ALTER USER ‘root’‘%’ IDENTIFIED BY ‘redhat3306’;//最后刷新权限FLUSH PRIVILEGES;测试远程登录配置启动服务 /mysql/app/mysql/support-files/mysql在 Rocky Linux 9 中chkconfig 命令已经被弃用deprecated。系统默认使用 systemd 和服务管理命令 systemctl。//采用官方提供的脚本[rootserver support-files]# pwd/mysql/app/mysql/support-files //这个mysql.servermysql.server就是没有改过的示例配置文件[rootzc support-files]# cp mysql.server mysql[rootzc support-files]# vim mysql46 basedir/mysql/app/mysql47 datadir/mysql/data/3306/data63 mysqld_pid_file_path/mysql/data/3306/mysql.pid65 then66 basedir/mysql/app/mysql67 bindir/mysql/app/mysql/bin69 then70 datadir/mysql/data/3306/data71 fi72 sbindir/mysql/app/mysql/bin73 libexecdir/mysql/app/mysql/bin105 PATH“/sbin:/usr/sbin:/bin:/mysql/app/mysql/bin:/usr/bin:$basedir/bin”207 conf/mysql/data/3306/my.cnf233extra_args“”234 if test -r “/mysql/data/3306/my.cnf”235 then236 extra_args“-e /mysql/data/3306/my.cnf”237 fi266bindir/mysqldsafe−−defaults−file/mysql/data/3306/my.cnf−−datadirbindir/mysqld_safe --defaults-file/mysql/data/3306/my.cnf --datadirbindir/mysqlds​afe−−defaults−file/mysql/data/3306/my.cnf−−datadirdatadir --pid-file“$mysqld_pid_file_path” $other_args /dev/n ull 注意配置文件中 和/之间不要有空格//查看状态[rootserver support-files]# ./mysql status./mysql: line46: /mysql/app/mysql: Is a directory ./mysql: line47: /mysql/data/3306/data: Is a directory ./mysql: line63: /mysql/data/3306/mysql.pid: Permission denied //删掉多余的空格就好了[rootserver support-files]# vim mysql[rootserver support-files]# ./mysql statusSUCCESS!MySQL running(13869)[rootzc support-files]# ./mysql stopShutting down MySQL... SUCCESS![rootzc support-files]# ./mysql startStarting MySQL..SUCCESS![rootzc support-files]# ./mysql statusSUCCESS!MySQL running(15419)service方式之后可以把mysql放到/etc/init.d/下也可以通过service服务来管理[rootzc support-files]# cp mysql /etc/init.d///注意这个mysql是你刚刚配置的那个[rootzc support-files]# service mysql statusSUCCESS!MySQL running(15419)[rootzc support-files]#[rootzc support-files]# service mysql stopShutting down MySQL..SUCCESS![rootzc support-files]#[rootzc support-files]# service mysql startStarting MySQL..SUCCESS!设置开机自启由于 在 Rocky Linux 9 中chkconfig 命令已经被弃用deprecated。系统默认使用 systemd 和服务管理命令 systemctl。所以下面这个配置不适应于rocky9版本[rootzc support-files]# chkconfig --level 35 mysql on[rootzc support-files]# chkconfig --list[rootzc support-files]# chkconfig --level 2345 mysql off[rootzc support-files]# chkconfig --level 35 mysql on[rootzc support-files]# chkconfig --listmysql0:off1:off2:off3:on4:off5:on6:off 测试重启后。查看mysql服务自动启动。systemd方式[rootserver system]# pwd/usr/lib/systemd/system[rootserver system]# vim mysqld.service[rootserver system]# cat mysqld.service[Unit]DescriptionMySQL ServerDocumentationman:mysqld(8)Documentationhttp://dev.mysql.com/doc/refman/en/using-systemd.htmlAfternetwork.targetAftersyslog.target[Install]WantedBymulti-user.target[Service]UsermysqlGroupmysqlTypeforkingPIDFile/mysql/data/3306/mysql.pidTimeoutSec0# Execute pre and post scripts as rootPermissionsStartOnlytrue# Start main serviceExecStart/mysql/app/mysql/support-files/mysql start# Use this to switch malloc implementationEnvironmentFile-/etc/sysconfig/mysql# Sets open_files_limitLimitNOFILE65536LimitNPROC65536Restarton-failureRestartPreventExitStatus1PrivateTmpfalse启动服务如果启动失败 把mysqld.service Type改成simple试试因为 Typesimple 告诉 systemd“这个命令本身不管它干什么它就是主角你直接盯着它就行。”[rootzc system]# systemctl daemon-reload[rootzc system]# systemctl status mysqld.service* mysqld.service - MySQL Server Loaded: loaded(/usr/lib/systemd/system/mysqld.service;disabled;vendor preset: disabled)Active: inactive(dead)Docs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.html[rootzc system]# systemctl start mysqld[rootzc system]# systemctl status mysqld.service* mysqld.service - MySQL Server Loaded: loaded(/usr/lib/systemd/system/mysqld.service;disabled;vendor preset: disabled)Active: active(running)since Fri2024-02-1622:42:06 CST;2s ago Docs: man:mysqld(8)//开机自启[rootserver system]# systemctl enable mysqldCreated symlink /etc/systemd/system/multi-user.target.wants/mysqld.service -/usr/lib/systemd/system/mysqld.service.密码过期忘记密码*** 如何不用密码登录跳过权限表进入mysql数据库。比如密码忘记或者过期如何不用密码登录1.修改配置文件 /mysql/data/3306/my.cnf[rootzc ~]# vim /mysql/data/3306/my.cnf[mysqld]skip-grant-tables2.重启数据库[rootzc ~]# systemctl restart mysqld[rootzc ~]# mysql -uroot -pEnter password: 不需要密码直接回车 Welcome to the MySQL monitor. Commands end with;or\g. Your MySQL connectionidis7Server version:8.0.16 MySQL Community Server - GPL Copyright(c)2000,2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Typehelp;or\hforhelp. Type\ctoclearthe current input statement mysqlselect* from mysql.user whereuserroot\G password_expired: N 密码过期这里会显示Y改成N即可。 mysqluse mysql;Reading table informationforcompletion of table andcolumnnames You can turn off this feature to get a quicker startup with-ADatabase changed mysqlupdate usersetpassword_expiredNwhereuserroot;Query OK,0rows affected(0.00sec)Rows matched:2Changed:0Warnings:0mysqlflush privileges;Query OK,0rows affected(0.01sec)mysqlexitBye3.把my.cnf 中的 skip-grant-tables注释掉 并重启服务[rootzc ~]# vim /mysql/data/3306/my.cnf[rootzc ~]# systemctl restart mysqld[rootzc ~]# mysql -uroot -pEnter password: 不输入密码无法登录 ERROR1045(28000): Access deniedforuserrootlocalhost(using password: NO)创建数据库create database memeda default charset utf8mb4 collate utf8mb4_general_ci;create usermemeda%identified bymemeda;grant all privileges on memeda.*tomemeda%;flush privileges;selectuser,hostfrommysql.user;