linux环境下手动安装mysql
没想到兜兜转转这么些年,今天申请个云服务器用来搭建求生2服务器,先用mysql来测试,结果还是花了相当久的时间。
基本所有单节点部署应用到linux环境,都三个流程:
1 下载安装包
2 解压修改配置文件
3 运行启动脚本
我们按这个流程来说我遇到并解决的问题 ,如果你在过程中遇到什么问题,也请先暂停你的启动流程,移步到最下面的内容,看看是否有和你遇到一样的问题,解决以后继续
1 下载安装流程
进入官网下载对应安装包。
mysql官网
版本号根据你的系统环境来选,一般选择9.0.x比较保守些。操作系统对照图片进行相同选择,还有记得选x86_64的包,应该没人还在用32位的电脑了吧
选择好后,右键donwnload按钮复制下载连接。
进入linux控制台执行如下命令
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.28-linux-glibc2.12-i686.tar.xz
或者
curl -O -L https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.28-linux-glibc2.12-i686.tar.xz #-L是防止跳转网址导致下载失败
执行完下载后,当前目录下就会有你的下载包
2 解压修改配置文件
解压下载包
tar -xvf mysql-8.0.28-linux-glibc2.12-i686.tar.xz
修改my.cnf配置文件
一般是在/etc/这个目录下
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/mysqld.log
pid-file = /usr/local/mysql/mysqld.pid
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1 # 不区分大小写
sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO'
default-time_zone = '+8:00'
这是我的配置文件,可以看到我的安装包解压文件路径是在/user/local/mysql路径下,大家可以mv转移到/user/local/mysql路径下,这样就能直接将我的这个文件复制粘贴了。 也可以直接改配置文件到你的解压路径下。
mv ./mysql-8.0.25-linux-glibc2.12-x86_64 /usr/local/mysql
3 运行启动脚本
首先进入bin目录执行mysqld脚本
./bin/mysqld --initialize --user=root
接下来进入support目录执行mysql.server脚本
./mysql.server start
执行完后,mysql就算起起来了
接着就可以用bin目录下的mysql脚本文件访问了。
./mysql -u root -p
第一次登录的密码会显示在你的日志文件中,日志文件路径参照你的配置文件设置中的log-error寻找。
我这里的就是在
/usr/local/mysql/mysqld.log
log-error = /usr/local/mysql/mysqld.log
进入后使用
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;
修改成你想要的密码
过程中遇到并解决的问题
1 启动mysql脚本出错:mysql: error while loading shared libraries: libncurses.so.6: cannot open …
少依赖库,但是这个问题可以通过降低你安装包的mysql版本解决,重新安装更低版本的mysql包
2 启动mysqld脚本报错 ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
my.cnf文件可能配置丢失,检查
[mysqld]
port = 3306
socket = /tmp/mysql.sock
socket此项是否设置
3 腾讯云通过公网ip访问mysql失败
1 防火墙设置开放3306端口
2 登录你的mysql,对当前用户开放外网ip访问权限
8.0以上版本mysql使用如下语句
create user root@'%' identified by '123456';
grant all privileges on *.* to root@'%' with grant option;
一切启动完成后就可以愉快访问啦