本文基于Ubuntu20.04开讲,使用的mysql是5.7版本。
由于公司电脑内部是没有网络的,使用在线安装mysql不得行,于是我大搜开搜,开始上手到一度接近崩溃,有时候一个配置没弄好可能都要拖几天,一堆配置问题让你看的脑袋疼。通过一个多星期的努力,一步一步把mysql给搭建好了,并且自己写了一个mysql离线自动化部署的shell脚本,直接上操作步骤(详细解释)
不想看文章的可以直接百度网盘链接提取,里面包含安装包,依赖包,自动化部署脚本offline.sh可以直接运行(注意:博主用的是ubuntu20.04,最好一致)
通过百度网盘分享的文件:mysqIinstall
链接:百度网盘 请输入提取码
提取码:qwjk
1.建立mysql账户和组
#建立mysql账户和组
#手动创建/etc/my.cnf文件,防止没有的情况
sudo touch /etc/my.cnf
#创建mysql用户组
sudo groupadd mysql
#创建一个名为mysql 的用户,并且加入mysql用户组
sudo useradd -g mysql mysql
2.安装所需要的依赖,移动并解压文件
这里我们下载的是mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz,可以点击链接下载
总共需要按照顺序执行三个依赖包(网址我找不到了,就给放百度网盘分享给你们)----数据库初始化才不会报错
(1)libaio1_0.3.112-5_amd64.deb,(2)libtinfo5_6.2-0ubuntu2_amd64.deb,(3)libncurses5_6.2-0ubuntu2_amd64.deb
#安装依赖包
sudo dpkg -i libaio1_0.3.112-5_amd64.deb
sudo dpkg -i libtinfo5_6.2-0ubuntu2_amd64.deb
sudo dpkg -i libncurses5_6.2-0ubuntu2_amd64.deb
#移动并解压文件
#先切换到你所下载的目录下面,例如就在项目下就不需要换位置,压缩包为你自己下载的名字
tar -zxvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz
#移动文件并且修改名字
sudo mv mysql-5.7.9-linux-glibc2.5-x86_64 /usr/local/mysql
3.更改所属的组和用户
更改用户属性都需要使用管理员运行,写入指定内容配置my.cnf文件
#更改所属的组和用户
#切换到指定目录下
cd /usr/local
#更改mysql的权限
sudo chown -R mysql mysql
sudo chgrp -R mysql mysql/
#进入mysql文件夹
cd mysql/
#为了防止以前有存于data,固先删除
sudo rm -r data
#创建data文件夹
sudo mkdir data
#更改权限
sudo chown -R mysql:mysql data
sudo mkdir /var/lib/mysql
sudo chown -R mysql /var/lib/mysql
sudo chgrp -R mysql /var/lib/mysql
#授予my.cnf权限
sudo chown $USER /etc/my.cnf
#编辑my.cnf文件,直接覆盖内容写入(按照我下面的内容写入)如果自己要改端口,可以修改里面的port值
printf "[mysql]
socket=/var/lib/mysql/mysql.sock
#set mysql client default chararter
default-character-set=utf8
[mysqld]
pid-file=/usr/local/mysql/data/mysql.pid
socket=/var/lib/mysql/mysql.sock
#set mysql server port
port = 3306 #默认是3306
#set mysql install base dir
basedir=/usr/local/mysql
#set the data store dir
datadir=/usr/local/mysql/data
#set the number of allow max connnection
max_connections=200
#set server charactre default encoding
character-set-server=utf8
#the storage engine
default-storage-engine=INNODB
#忽略数据库表名的大小写
lower_case_table_names=1
#最大请求包
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysql.server]
user=mysql #用户不是mysql时,更改此处
basedir=/usr/local/mysql" > /etc/my.cnf
4.设置mysql服务,mysql初始化
只有安装上面三个依赖,到这个步骤才不会出错
#删除data的原因是因为初始化会自动创建
sudo rm -r /usr/local/mysql/data
#mysql初始化
sudo bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
#复制服务启动到mysqld,便于后续service mysqld start启动
sudo cp ./support-files/mysql.server /etc/init.d/mysqld
#赋予mysqld权限
sudo chmod +x /etc/init.d/mysqld
#建立软链接到var/lib/mysql下面
sudo ln -s /usr/local/mysql/mysql.sock /var/lib/mysql/mysql.sock
5.启动mysql服务并添加环境变量
#重加载
sudo systemctl daemon-reload
#先停止服务
sudo service mysqld stop
#启动服务
sudo service mysqld start
#查看服务是否启动
sudo service mysqld status
#如果查看服务启动失败
sudo -i #进入到管理员身份
#进入到data里面
cd /usr/local/mysql/data
#查看报错日志,出什么错误就对症下药
cat ubuntu.err
6.获得mysql初始密码,并运行登录
运行到下面的内容,会输出初始化root用户的密码,就可以利用这个密码登录了
#将mysql路径加入到环境变量path中
if grep -q "export PATH=\$PATH:/usr/local/mysql/bin
export LD_LIBRARY_PATH=/usr/local/mysql/lib" ~/.bashrc; then
echo 'file is existed'
else
echo "export PATH=\$PATH:/usr/local/mysql/bin
export LD_LIBRARY_PATH=/usr/local/mysql/lib" >> ~/.bashrc
fi
#保存退出
source ~/.bashrc
#获得mysql初始密码
result=$(sudo cat /root/.mysql_secret)
second_line=$(echo -e "$result" | awk 'NR==2')
echo "$second_line"
7.登录成功修改当前密码,并创建admin(自定义)用户
#使用初始化密码登录mysql
mysql -uroot -p
#输入你的初始化密码
.......
#进入mysql里面
#修改当前用户的密码
set PASSWORD=PASSWORD('123456'); #密码自己可以自定义
#创建用户admin,并设密码为123456
CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';
最后到这就mysql部署结束了,如果你还出现问题的话,或者你还没有部署成功的话,我呢已经替大家踩过雷了,请把你的问题放在评论区或者私信我,我会尽量帮你解决。