Linux中安装mysql8,很详细
一、查看系统glibc版本号,下载对应版本的MySQL
1、查看glibc版本号办法
方法一:使用ldd命令
在终端中输入
ldd --version
命令,然后按下回车键。这个命令会显示系统中安装的glibc版本号。例如,如果输出信息是ldd (GNU libc) 2.31
,那么glibc的版本号就是2.31。请注意,不同的Linux发行版可能会有不同的命令来查看glibc版本号,但这个命令适用于大多数常见的Linux发行版,如Ubuntu、Debian、CentOS等。方法二:查看libc.so文件
在Linux系统中,glibc的库文件通常是libc.so。你可以使用
ls -l /lib64/libc.so.6
命令查看这个文件的链接信息。如果输出信息中包含类似libc-2.12.so
的内容,那么glibc的版本号就是2.12。此外,你也可以使用/lib64/libc.so.6
命令直接查看glibc的版本信息,输出信息中会包含版本号。方法三:使用getconf命令
getconf
命令也可以用来查看glibc的版本号。在终端中输入getconf _POSIX_VERSION
命令,然后按下回车键。如果输出信息是200809L
,那么glibc的版本号就是2.12。需要注意的是,这个方法只能用来查看glibc是否符合POSIX标准,而不能直接获取glibc的版本号。常见问题及解决方法
- 命令不存在或无法执行:如果你的系统中没有
ldd
或getconf
命令,或者这些命令无法执行,可能是因为你的系统没有安装相应的软件包。你可以尝试使用包管理工具(如apt、yum等)安装这些软件包。- 查看文件时权限不足:如果你无法查看
/lib64/libc.so.6
文件的内容,可能是因为你没有足够的权限。你可以使用sudo
命令以管理员权限执行查看文件的命令。- 多个版本共存:在一些情况下,系统中可能会同时存在多个版本的glibc。你可以使用
strings /lib64/libc.so.6 | grep GLIBC
命令查看该文件中包含的所有glibc版本信息。
2、下载对应版本的MySQL
例如,我下载的2.17版本glibc的MySQL
二、检查MySQL是否存在并解压
1、查看MySQL是否存在:
rpm -qa|grep -i mysql
2、解压MySQL压缩包,并重命名原文件夹
解压:
tar xvJf mysql-8.0.40-linux-glibc2.17-x86_64.tar.xz
附注:tar命令参数: -x:解开已有的归档文件 -v:显示详细的过程 -J:使用xz压缩或解压归档文件 -f:指定归档文件名重命名:重命名主要为觉得解压之后MySQL文件夹名太长了
mv mysql-8.0.40-linux-glibc2.17-x86_64 mysql-8.0.40
三、开始安装MySQL
1、创建data文件夹,data文件夹就是存在MySQL数据的地方,位置任意,保证能访问到即可,一般建议放在MySQL解压之后的文件夹中或附近
2、创建mysql组和用户
这里主要是为了生产环境服务器一般对root用户有限制
1、创建mysql组
groupadd mysql
2、创建mysql用户
useradd -g mysql mysql
3、给解压的MySQL文件夹及创建的data文件夹修改用户及用户组权限
chown -R mysql:mysql /usr/local/soft/mysql/
3、设置MySQL配置文件my.cnf
3.1、一般centos的默认的my.cnf在/etc/my.cnf,其他操作系统自行百度,也可以自定义位置,例如我放在和解压文件夹一起
3.2、设置binlog文件夹用户存放bin-log日志
[mysqld]
#设置MySQL服务监听端口,默认3306
port=3306
#设置MySQL服务器绑定的IP地址,可以设置为自己本机IP
bind-address=0.0.0.0
#设置MySQL数据库用户
user=mysql
#数据库文件路径
basedir=/usr/local/soft/mysql/mysql-8.0.40
#数据库数据目录,存储数据库文件的路径
datadir=/usr/local/soft/mysql/data
#设置MySQL服务器使用的套接字文件路径
socket=/usr/local/soft/mysql/mysql.sock
#设置指定存放进程ID的文件
pid-file=/usr/local/soft/mysql/mysql.pid
#设置每个连接的默认字符集
character_set_server=utf8mb4
symbolic-links=0
# mysql-5.6.6丢弃了这个系统变量,版本高于5.6.6的可加上
explicit_defaults_for_timestamp=true
log-bin = /usr/local/soft/mysql/binlog/mysql-bin
lower_case_table_names = 1
4、Mysql初始化
Linux中的MySQL默认是区分表明大小写的,如果你是安装的也是MySQL8,那么不区分大小需要在数据库初始化时设置,不然初始化后,在配置文件在设置重启时是会报错的
使用mysql的bin下面的mysqld脚本:mysql-8.0.40/bin/mysqld
--user=mysql 指定用户;--basedir指定mysql解压文件夹 --datadir指定data文件夹 --defaults-file指定配置文件位置
/usr/local/soft/mysql/mysql-8.0.40/bin/mysqld --defaults-file=/usr/local/soft/mysql/my.cnf --user=mysql --basedir=/usr/local/soft/mysql/mysql-8.0.40 --datadir=/usr/local/soft/mysql/data --lower-case-table-names=1 --initialize
–lower-case-table-names=1 即设置不区分表明大小写,最后面的 jBhxh,!u6p!. 为初始化生产的临时密码。
如果初始化失败,根据失败原因自行百度,最后面参考资料【2】中记录有libaio.so.1缺少的处理办法【./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory】
如果上面配置文件有修改或其他原因可以重新初始化,重新初始化需要删除data
四、启动并登录MySQL,设置MySQL开机自启动
加入到系统服务并启动mysql
cp /usr/local/soft/mysql/mysql-8.0.40/support-files/mysql.server /etc/init.d/mysql
修改mysql自启服务配置
vim /etc/init.d/mysql
启动服务
service mysql start
#登录mysql,一定要开启服务后才能登陆
/usr/local/soft/mysql/mysql-8.0.40/bin/mysql -u root -p
./mysql -u root -p
# 登录成功后会提示你重置密码
# 修改密码,SQL语句后面的分号不能丢
ALTER USER 'root'@'localhost' IDENTIFIED BY 'uacsapp';
FLUSH PRIVILEGES; #刷新
# 退出 quit
# 重启服务 service mysql restart
# 再次登陆 /usr/local/soft/mysql/mysql-8.0.40/bin/mysql -u root -p //输入刚修改的密码1234敲回车键
# 到此mysql已经安装完成了
vim /etc/init.d/mysql
注:这里我启动失败了多次,提示下图,就是脚本中某些设置使用了默认mysql导致的
四、设置开机自启动(方法一)
添加服务列表的方式,放置到/etc/rc.d/init.d中
linux开机自启动的服务都存在这个/etc/rc.d/init.d/
文件夹下面,开机的时候会自动去启动该文件下的服务,那么到这里事情就简单了,我们只需要把mysql的启动服务copy过来即可。
#copy并重命名
cp /usr/local/soft/mysql/mysql-8.0.40/support-files/mysql.server /etc/rc.d/init.d/mysql
#复制成功后我们需要给赋予权限
chmod +x /etc/init.d/mysql
#添加为服务:
chkconfig --add mysql
#查看服务列表
chkconfig --list#看到mysql服务的3、4、5状态为开或者为 on 则表示成功。 如果是 关或者 off 则执行一下:
chkconfig --level 345 mysqld on
#重启计算机:
reboot
方法二、设置systemctl自启动
使用方法一配置完自启动后,会自动配置systemctl start mysql.service,但是使用方法一启动的mysql,通过systemctl status mysql.service看状态是Active: inactive (dead),
使用mysql -u root -p 连接数据库的时候提示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 但是,在my.cnf中已经配了socket项,
这种其实就是客户端client默认使用/tmp/mysql.sock去连接数据库,但是因修改了默认位置,必须也指定client连接的sock位置
修改完my.cnf记得重启数据库
四、解决本地连接时找不到mysql.sock问题
当遇到ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 错误时,这通常意味着客户端尝试通过Unix套接字文件连接本地MySQL服务器失败,以下是集中可能得原因及其解决方案
1、配置文件中的套接字路径不匹配
如果/var/lib/mysql/目录下或者/tmp/mysql.sock确实不存在mysql.sock文件,则可能是由于配置文件中指定的套接字路径与实际生成的位置不符。此时应该检查并编辑MySQL的配置(my.cnf)文件来修正这个问题。
find / -name my.cnf #查找my.cnf文件位置
确保[mysqld]和[client]节点内查找或添加如下设置以确保两者指向相同的套接字地址:
[client]
socket=/usr/local/soft/mysql/data/mysql.sock
[mysqld]
socket=/usr/local/soft/mysql/data/mysql.sock
保存更改后重启MySQL服务使配置生效
但测试过程中在自定义的my.cnf中指定client未生效,修改默认my.cnf(centos位置在/enc/mysql.cnf)配置文件,添加上client可以生效,猜测mysql连接服务的时候还是使用了默认的my.cnf去读取socket,默认my.cnf未配置走了/temp/mysql.sock
2、权限不够问题,MySQL无法在工作目录下创建所需的临时文件mysql.sock,可以通过调整响应目录的所有权和权限来解决问题。
3、如果使用IP,例如mysql -uroot -h'192.168.100.10'
则表示使用TCP/IP协议连接mysql,这时不会使用套接字,就没有套接字找不到的问题。
4、在连接命令行上使用"-S"选项指定 mysql -S /data/mysql.sock
5、在/temp/mysql.sock建立软链接执行自定义的mysql.sock位置。
五、解决root不能登录问题 message from server: "' is not allowed to connect to this MySQL server"
出现这种情况的原因是因为:mysql数据库只允许自身所在的本机器连接,不允许远程连接。
可以通过本地登录,查询并修改mysql.user表中的host字段为%解除限制。
#本地登录mysql
mysql -u root -p
#切换数据库
use mysql
#查询user表
select host from user where user='root';
#修改user表
update user set host = '%' where user ='root';
#刷新配置
flush privileges;
六、Public Key Retrieval is not allowed错误,
连接mysql时报错:Public Key Retrieval is not allowed(不允许公钥检索)
解决方法:连接设置——驱动属性——allowPublicKeyRetrieval=false(这里的运输公钥检索是默认关闭的,需要把它开启),改为allowPublicKeyRetrieval=true即可。
连接数据库后,如果不想把此项开启,那在改为false就行,连接过一次后面都可正常在重新连接使用,但是如果新增连接还是要把此项开启,不然还是会继续报错。
至此,数据库完成安装与链接
最后附上我的my.cnf和mysql.server(原文件在mysql安装,例如/usr/local/soft/mysql/mysql-8.0.40/support-files,并已在配置自启动时更名为mysql)仅供参考
附:参考:
1、Linux系统中glibc版本号的查看方法-百度开发者中心
2、Linux中安装mysql8,很详细_linux安装mysql8-CSDN博客
3、https://wenku.csdn.net/answer/33ev78n5u8
4、Can't connect to local MySQL server through socket - 数据派 - 博客园
5、https://www.cnblogs.com/-do-do/articles/18417512mysql数据库连接报错:is not allowed to connect to this mysql server - dodo的安全学习笔记 - 博客园https://www.cnblogs.com/-do-do/articles/18417512
原文地址:https://blog.csdn.net/weixin_50003028/article/details/144877608
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!