admin管理员组文章数量:1641871
1、到指定目录下下载安装包
[root@VM-0-14-centos ~]# cd /usr/local/src
2、下载mysql8
[root@VM-0-14-centos src]# wget https://dev.mysql/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
3、解压mysql8, 通过xz命令解压出tar包, 然后通过tar命令解压出文件夹
[root@VM-0-14-centos src]# xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
[root@VM-0-14-centos src]# tar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar
4、将/usr/local/src下的mysql-8.0.20-linux-glibc2.12-x86_64文件夹内容移动到/usr/local/mysql下
[root@VM-0-14-centos src]# mkdir /usr/local/mysql
[root@VM-0-14-centos src]# mv /usr/local/src/mysql-8.0.20-linux-glibc2.12-x86_64/* /usr/local/mysql
[root@VM-0-14-centos src]# cd /usr/local/mysql
5、创建用户组及用户和密码
[root@VM-0-14-centos mysql]# groupadd mysql
[root@VM-0-14-centos mysql]# useradd -g mysql mysql
6、授权用户
[root@VM-0-14-centos mysql]# chown -R mysql.mysql /usr/local/mysql
7、编辑myf文件
[root@VM-0-14-centos mysql]# vim /etc/myf
按大写 i 进入修改模式 然后将下面的文本复制进去
[mysqld]
user=root
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
port=3306
max_connections=200
max_connect_errors=10
character-set-server=utf8
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
lower_case_table_names=1
group_concat_max_len=102400
[mysql]
default-character-set=utf8
[client]
port=3306
default-character-set=utf8
复制进去后按esc退出修改模式,然后按 shift+: 然后输入wq保存文件
8、进入到bin目录下
[root@VM-0-14-centos mysql]# cd bin
9、初始化基础信息,最后一行后面会有个随机的初始密码保存下来一会登录要用(如果忘记了就删掉data重新初始化)
[root@VM-0-14-centos bin]# ./mysqld --initialize
如果提示 :./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
就执行下下面这个再执行初始化
[root@VM-0-14-centos bin]# yum install -y libaio
[root@VM-0-14-centos bin]# yum -y install numactl
如果是没联网的机器,需要去https://pkgs/下载好rpm到机器安装
rpm -ivh XXX.rpm
[root@VM-0-14-centos bin]# ./mysqld --initialize
记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码
10、添加mysqld服务到系统
先返回到mysql目录
[root@VM-0-14-centos bin]# cd ..
[root@VM-0-14-centos mysql]# cp -a ./support-files/mysql.server /etc/init.d/mysql
11、授权以及添加服务
[root@VM-0-14-centos mysql]# chmod +x /etc/init.d/mysql
[root@VM-0-14-centos mysql]# chkconfig --add mysql
12、启动mysql
[root@VM-0-14-centos mysql]# service mysql start
13、将mysql添加到命令服务
[root@VM-0-14-centos mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin
14、登录mysql
[root@VM-0-14-centos mysql]# mysql -uroot -p
如果出现 mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
cd /usr/local/mysql/bin
ldd mysql
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
15、输入刚刚初始化时生成的密码
16、更改root用户密码, 注意语句后的; 执行语句忘记写了 可以补个空的;回车也可以将语句执行
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
mysql> flush privileges;
17、更改root连接权限
mysql> use mysql;
mysql> update user set host='%' where user = 'root';
mysql> flush privileges;
18、exit; 退出mysql,现在就可以通过连接工具登录root账户进行远程连接了
至此,mysql8.0.20版本的数据库安装,已经完成。系统为CentOS Linux release 7.8.2003 (Core)
-------------------------
脚本的方式一键安装mysql8
1、防止初始化的时候报错,先把下面两个装上
[root@VM-0-14-centos bin]# yum install -y libaio
[root@VM-0-14-centos bin]# yum -y install numactl
如果是断网安装则需要自己去网上下载下面几个rpm包:
rpm安装命令:
rpm –ivh 包名
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm
2、编写install_mysql.sh脚本文件
#! /bin/bash
cd /usr/local/src
DfileName=mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
#解压
if [ -f ${DfileName} ];then
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 解压mysql压缩包!"
tar -xvf ${DfileName}
[ $? -eq 0 ] && echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 解压成功!"
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 创建mysql目录!"
mkdir -p /usr/local/mysql
#改目录名为mysql
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 改目录名为mysql!"
mv /usr/local/src/mysql-8.0.11-linux-glibc2.12-x86_64/* /usr/local/mysql
rm -rf /usr/local/src/mysql-8.0.11-linux-glibc2.12-x86_64
else
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 找不到mysql压缩包!"
exit 1
fi
#创建、添加mysql用户组
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 创建、添加mysql用户组!"
groupadd mysql
useradd -r -g mysql mysql
#创建data空目录
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 创建data空目录!"
mkdir -p /usr/local/mysql/data
#关联myql用户到mysql用户组中
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 关联myql用户到mysql用户组中!"
chown -R mysql.mysql /usr/local/mysql
#编辑myf配置文件 每次写入前清空此文件内容
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 编辑myf配置文件!"
cat /dev/null > /etc/myf
echo "[mysqld]" >> /etc/myf
echo "user=root" >> /etc/myf
echo "datadir=/usr/local/mysql/data" >> /etc/myf
echo "basedir=/usr/local/mysql" >> /etc/myf
echo "port=3306" >> /etc/myf
echo "max_connections=200" >> /etc/myf
echo "max_connect_errors=10" >> /etc/myf
echo "character-set-server=utf8" >> /etc/myf
echo "default-storage-engine=INNODB" >> /etc/myf
echo "default_authentication_plugin=mysql_native_password" >> /etc/myf
echo "lower_case_table_names=1" >> /etc/myf
echo "group_concat_max_len=102400" >> /etc/myf
echo "[mysql]" >> /etc/myf
echo "default-character-set=utf8" >> /etc/myf
echo "[client]" >> /etc/myf
echo "port=3306" >> /etc/myf
echo "default-character-set=utf8" >> /etc/myf
#复制文件
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 添加mysqld服务到系统!"
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#将mysql服务加到系统服务中
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 授权以及添加服务!"
chmod +x /etc/init.d/mysql
chkconfig --add mysql
#初始化,且密码为空
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 初始化,且密码为空!"
/usr/local/mysql/bin/mysqld --defaults-file=/etc/myf --initialize-insecure
#添加到环境变量
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 添加到环境变量!"
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
source /etc/profile
#启动服务
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 启动服务!"
service mysql start
#软连接
echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 添加软连接!"
ln -s /usr/local/mysql/bin/mysql /usr/bin
#sudo ln -s /lib64/libtinfo.so.6 /lib64/libtinfo.so.5
2、编写connect.sh脚本文件,这是连接数据库修改密码的,运行可能会报错,不用管
#! /bin/bash
mysql -uroot<<EOF
use mysql;
update user set host ='%' where user='root';
ALTER USER "root"@"%" IDENTIFIED BY "root";
flush privileges;
EOF
3、编写create_db.sh脚本文件
#! /bin/bash
#再次连接后执行sql就可以修改密码了,很奇怪,可能是因为初始化设置了空密码。
set_db() {
mysql -uroot <<EOF
use mysql;
update user set host ='%' where user='root';
ALTER USER "root"@"%" IDENTIFIED BY "root";
flush privileges;
EOF
echo "打开远程连接、修改密码成功"
}
set_db
#读取sql文件,并用文件名创建数据库
readDir() {
# 获取传入的目录路径
local dir=/usr/local/src/sql_path
# 循环指定目录下的所有文件
local files
files=$(ls "$dir")
for file in $files; do
local path="$dir/$file" #指的是当前遍历文件的完整路径
# 判断是否是目录,如果是目录则递归遍历,如果是文件则打印该文件的完整>路径
if [ -d "$path" ]; then
echo "跳过$path目录"
else
mysql -uroot -proot -e "CREATE DATABASE ${file%%.sql*} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql -uroot -proot ${file%%.sql*} -e "source $path"
echo "执行sql文件${file%%.sql*}中"
fi
echo "运行成功"
done
}
readDir
echo "finished install"
4、编写main.sh主脚本文件,主要是为了整合上面三个文件运行
#! /bin/bash
cd /usr/local/src
#给三个功能脚本授权运行
chmod +x install_mysql.sh
chmod +x create_db.sh
chmod +x connect.sh
./install_mysql.sh
./connect.sh
echo "连接mysql中"
./create_db.sh
5、去到/usr/local/src路径下,把下载好的包和4个脚本文件放入该路径。
6、因为这些脚本文件我是进行复制在Windows下面编辑的,所以导致了错误。在Windows中回车换行是\n\r,而Linux下则是\n,会导致多出来\r。所以解决方法就是去除掉多出来的\r。使用以下命令就可以对文件中的\r进行批量删除,4个都要执行
sed -i 's/\r$//' ***.sh
7、创建sql_path文件夹,把需要导入的sql文件放进去,create_db.sh脚本文件用sql来创建数据库并生成表数据
mkdir -p /usr/local/src/sql_path
8、授权并执行 main.sh主脚本文件
chmod +x main.sh
./main.sh
数据库安装完毕,并且数据导入成功!
mysql启动方式:
1. /etc/init.d/mysql start
start|stop|restart|reload|force-reload
2. /usr/local/mysql/support-files/mysql.server start
start|stop|restart|reload|force-reload
3. service mysql start
start|stop|restart|reload|force-reload
4. systemctl start mysql
start|stop|restart|reload|force-reload
本文标签: Linux
版权声明:本文标题:linux下安装mysql8 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729328889a1196124.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论