本文的服务器环境:openEuler毛坯版的,很多常用的指令都没有预装,比如rpm、tar等等,没有网络坏境,需要自己手动配置本地yum仓库,安装相关指令
1、检查服务器是否已经安装了MySQL
1.1、查询mysql以安装的相关依赖:
rpm -qa | grep mysql
如图所示:
将查询出的安装程序使用rpm命令依次卸载:
rpm -e mysql-xxxxxxx --nodeps
1.2、查找含有MySQL的目录
find / -name mysql
如图所示:
使用 rm -rf 命令, 删除上方的mysql相关目录依(根据自己查找出来的目录进行依次删除):
2、下载mysql8的tar版本,即解压版
点击下载版本包:mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
3、上传服务器(/home)并解压
- 解压:
-
tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
- 转移及重命名:
-
mv mysql-8.0.30-linux-glibc2.12-x86_64 /usr/local/mysql8
- 授权:chown -R [所有者]:[组] [目录或文件路径]
-
chown -R mysql:mysql /usr/local/mysql8
-
4、配置mysql所需的my.cnf文件
-
4.1、在/etc/目录下添加my.cnf文件:
-
vi /etc/my.cnf
配置文件内容:配置文件中的目录根据自己的实际情况可以做修改
-
# 优先读取/etc/my.cnf.d目录下配置文件,一般用不着 #!includedir /etc/my.cnf.d# 客服端设置 [client]# 服务套接字位置 socket=/mnt/data/mysql/mysql.sock[mysqld]# 数据目录,路径的位置根据实际情况配置,给目录指定权限,否真会报权限问题 datadir=/mnt/data/mysql/mysql-data# mysql端口号 port = 3306# 日志文件输出,需要给目录配置权限,否则会报目录权限问题 log-error=/mnt/data/mysql/mysql-logs/mysql.log# 不区分大小写 # MySQL在Windows上会将所有的表名和数据库名转换为小写,并且在查询时不区分大小写。这有助于在不同操作系统之间移植数据库 lower_case_table_names=1# 服务套接字位置,需要给目录配置权限 socket=/mnt/data/mysql/mysql.sock# 是否与旧版本的客户端兼容,可能需要将此参数设置为mysql_native_password # default_authentication_plugin=mysql_native_password# 最大传输如果数据包超过这个大小,MySQL会报错 # max_allowed_packet=64M# 最大连接并发数据量 # max_connections=1000
4.2、给my.cnf配置文件中指定的目录配置权限:(否则会在初始化时或是启动时出现问题,如果出现问题,应该实时查看初始化时与启动时的mysql.log日志)
-
chown -R mysql:mysql /mnt/data/mysql/mysql-data chown -R 755 /mnt/data/mysql/mysql-datachown -R mysql:mysql /mnt/data/mysql/mysql-logs chmod -R 755 /mnt/data/mysql/mysql-logschown -R mysql:mysql /mnt/data/mysql chown -R 755 /mnt/data/mysql
5、配置命令
-
设置命令,方便命令操作,软链接执行mysql8下对应命令文件,执行下面所有的指令
-
ln -snf /usr/local/mysql8/bin/mysql /usr/bin/mysqlln -snf /usr/local/mysql8/bin/mysqld /usr/sbin/mysqld ln -snf /usr/local/mysql8/bin/mysqladmin /usr/bin/mysqladminln -snf /usr/local/mysql8/bin/mysqlbinlog /usr/bin/mysqlbinlogln -snf /usr/local/mysql8/bin/mysqlcheck /usr/bin/mysqlcheckln -snf /usr/local/mysql8/bin/mysql_config_editor /usr/bin/mysql_config_editorln -snf /usr/local/mysql8/bin/mysqldump /usr/bin/mysqldumpln -snf /usr/local/mysql8/bin/mysqldumpslow /usr/bin/mysqldumpslowln -snf /usr/local/mysql8/bin/mysqlimport /usr/bin/mysqlimportln -snf /usr/local/mysql8/bin/mysqlpump /usr/bin/mysqlpumpln -snf /usr/local/mysql8/bin/mysql_secure_installation /usr/bin/mysql_secure_installationln -snf /usr/local/mysql8/bin/mysqlshow /usr/bin/mysqlshowln -snf /usr/local/mysql8/bin/mysqlslap /usr/bin/mysqlslapln -snf /usr/local/mysql8/bin/mysql_tzinfo_to_sql /usr/bin/mysql_tzinfo_to_sqlln -snf /usr/local/mysql8/bin/mysql_upgrade /usr/bin/mysql_upgrade
到此输入以下命令可以查看版本:
-
-
mysql -V mysqld -V
此步骤只有一台服务器遇到问题,是因为系统依赖坏境问题,缺少什么依赖库:
-
如何跟新依赖库自行百度即可,本文是从本地的yum仓库中进行安装的:
yum --disablerepo="*" --enablerepo="local" install ncurses-compat-libs
此问题理论上是不影响向下继续操作的,如有强迫症对应的error可以百度
-
6、修改系统配置
-
6.1、修改配置文件:/etc/profile
-
vi /etc/profile
在最后追加:
-
# add mysqlexport PATH=$PATH:/usr/local/mysql8/bin
6.2、配置启动项
从mysql8下拷贝mysql.server到/etc/init.d目录下: -
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld
修改/etc/init.d/mysqld的基础路径:
-
vi /etc/init.d/mysqld
修改目录位置:
-
basedir=/usr/local/mysql8 (安装路径) datadir=/mnt/data/mysql/mysql-data (与配置文件保持一致)
确保service mysql 或 mysqld start均可启动:
-
cp /etc/init.d/mysqld /etc/init.d/mysql
添加到启动列表:
-
-
-
-
-
-
chkconfig --add mysqld
刷新启动信息:
systemctl daemon-reload
查看启动项列表
chkconfig –list
如图所示:
7、 初始化mysql服务
初始化命令:--basedir:根据实际mysql安装路径
mysqld --user=mysql --basedir=/usr/local/mysql8 --initialize
初始化后,查看mysqld.log(默认/var/log/mysqld.log或本文取决于my.cnf的日志路径配置),找到root初始密码,在执行上方initialize语句时mysqld.log文件中就会打印,如图:
启动mysql:
service mysqld start
使用root登录:
mysql -uroot -p
首次需要修改密码 :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
问题总结:
- chown: invalid user: ?ysql:mysql?:
- 原因:这个错误表示在系统中没有找到名为mysql的用户或组
- 解决方式:
- 创建新用户:useradd mysql
- 有时候创建用户的同时也会自动创建同名的组。
- 创建新组:groupadd mysql
- 创建新用户:useradd mysql
- mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
- 这个错误信息表明您在尝试运行MySQL客户端(mysql)时,系统无法找到名为libtinfo.so.5的共享库文件。这通常发生在新安装或升级MySQL后,尤其是当系统上缺少某些必需的库文件时。libtinfo.so.5是ncurses库的一部分,它提供了终端处理功能,许多命令行和文本界面程序都依赖于它。不同版本的Linux发行版可能会预装不同版本的libtinfo,并且新版本的Linux可能不包含旧版本的libtinfo.so.5
- 解决方式:
- 以配置本地yum仓库: yum --disablerepo="*" --enablerepo="local" install ncurses-compat-libs
- 有网环境:yum install ncurses-libs
- Could not open file '/mnt/data/mysql/mysql-logs/mysql.log' for error logging: Permission denied
- /mnt/data/mysql/mysql-logs/ 这个目录下权限不够
- 解决方式
- 执行:
- chown -R mysql:mysql /mnt/data/mysql/mysql-data/
- chown -R 755 /mnt/data/mysql/mysql-data/
- chown -R 755 /mnt/data/mysql/mysql-logs/
- chown -R mysql:mysql /mnt/data/mysql/mysql-logs/
- 执行:
- Starting MySQL.... ERROR! The server quit without updating PID file (/mnt/data/mysql/mysql-data/localhost.localdomain.pid).
- /mnt/data/mysql/mysql-data这个目录权限不够
- 解决方式
- 执行:
- chown -R 755 /mnt/data/mysql/
- chown -R mysql:mysql /mnt/data/mysql/
- 执行: