赞
踩
1、到指定目录下下载安装包
[root@VM-0-14-centos ~]# cd /usr/local/src
2、下载mysql8
[root@VM-0-14-centos src]# wget https://dev.mysql.com/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、编辑my.cnf文件
[root@VM-0-14-centos mysql]# vim /etc/my.cnf
按大写 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.org/下载好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
- #编辑my.cnf配置文件 每次写入前清空此文件内容
- echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 编辑my.cnf配置文件!"
- cat /dev/null > /etc/my.cnf
- echo "[mysqld]" >> /etc/my.cnf
- echo "user=root" >> /etc/my.cnf
- echo "datadir=/usr/local/mysql/data" >> /etc/my.cnf
- echo "basedir=/usr/local/mysql" >> /etc/my.cnf
- echo "port=3306" >> /etc/my.cnf
- echo "max_connections=200" >> /etc/my.cnf
- echo "max_connect_errors=10" >> /etc/my.cnf
- echo "character-set-server=utf8" >> /etc/my.cnf
- echo "default-storage-engine=INNODB" >> /etc/my.cnf
- echo "default_authentication_plugin=mysql_native_password" >> /etc/my.cnf
- echo "lower_case_table_names=1" >> /etc/my.cnf
- echo "group_concat_max_len=102400" >> /etc/my.cnf
- echo "[mysql]" >> /etc/my.cnf
- echo "default-character-set=utf8" >> /etc/my.cnf
- echo "[client]" >> /etc/my.cnf
- echo "port=3306" >> /etc/my.cnf
- echo "default-character-set=utf8" >> /etc/my.cnf
- #复制文件
- 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/my.cnf --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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。