当前位置:   article > 正文

linux下安装mysql8_linux安装mysql8

linux安装mysql8

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命令解压出文件夹

  1. [root@VM-0-14-centos src]# xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
  2. [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下

  1. [root@VM-0-14-centos src]# mkdir /usr/local/mysql
  2. [root@VM-0-14-centos src]# mv /usr/local/src/mysql-8.0.20-linux-glibc2.12-x86_64/* /usr/local/mysql
  3. [root@VM-0-14-centos src]# cd /usr/local/mysql

5、创建用户组及用户和密码

  1. [root@VM-0-14-centos mysql]# groupadd mysql
  2. [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 进入修改模式 然后将下面的文本复制进去

  1. [mysqld]
  2. user=root
  3. datadir=/usr/local/mysql/data
  4. basedir=/usr/local/mysql
  5. port=3306
  6. max_connections=200
  7. max_connect_errors=10
  8. character-set-server=utf8
  9. default-storage-engine=INNODB
  10. default_authentication_plugin=mysql_native_password
  11. lower_case_table_names=1
  12. group_concat_max_len=102400
  13. [mysql]
  14. default-character-set=utf8
  15. [client]
  16. port=3306
  17. 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

就执行下下面这个再执行初始化

  1. [root@VM-0-14-centos bin]# yum install -y libaio
  2. [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、授权以及添加服务

  1. [root@VM-0-14-centos mysql]# chmod +x /etc/init.d/mysql
  2. [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

  1. cd /usr/local/mysql/bin
  2. 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连接权限

  1. mysql> use mysql;
  2. mysql> update user set host='%' where user = 'root';
  3. mysql> flush privileges;

18、exit; 退出mysql,现在就可以通过连接工具登录root账户进行远程连接了

至此,mysql8.0.20版本的数据库安装,已经完成。系统为CentOS Linux release 7.8.2003 (Core) 

-------------------------

脚本的方式一键安装mysql8

1、防止初始化的时候报错,先把下面两个装上

  1. [root@VM-0-14-centos bin]# yum install -y libaio
  2. [root@VM-0-14-centos bin]# yum -y install numactl

如果是断网安装则需要自己去网上下载下面几个rpm包:

 

  1. rpm安装命令:
  2. rpm –ivh 包名
  3. rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm

2、编写install_mysql.sh脚本文件

  1. #! /bin/bash
  2. cd /usr/local/src
  3. DfileName=mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
  4. #解压
  5. if [ -f ${DfileName} ];then
  6. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 解压mysql压缩包!"
  7. tar -xvf ${DfileName}
  8. [ $? -eq 0 ] && echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 解压成功!"
  9. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 创建mysql目录!"
  10. mkdir -p /usr/local/mysql
  11. #改目录名为mysql
  12. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 改目录名为mysql!"
  13. mv /usr/local/src/mysql-8.0.11-linux-glibc2.12-x86_64/* /usr/local/mysql
  14. rm -rf /usr/local/src/mysql-8.0.11-linux-glibc2.12-x86_64
  15. else
  16. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 找不到mysql压缩包!"
  17. exit 1
  18. fi
  19. #创建、添加mysql用户组
  20. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 创建、添加mysql用户组!"
  21. groupadd mysql
  22. useradd -r -g mysql mysql
  23. #创建data空目录
  24. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 创建data空目录!"
  25. mkdir -p /usr/local/mysql/data
  26. #关联myql用户到mysql用户组中
  27. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 关联myql用户到mysql用户组中!"
  28. chown -R mysql.mysql /usr/local/mysql
  29. #编辑my.cnf配置文件 每次写入前清空此文件内容
  30. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 编辑my.cnf配置文件!"
  31. cat /dev/null > /etc/my.cnf
  32. echo "[mysqld]" >> /etc/my.cnf
  33. echo "user=root" >> /etc/my.cnf
  34. echo "datadir=/usr/local/mysql/data" >> /etc/my.cnf
  35. echo "basedir=/usr/local/mysql" >> /etc/my.cnf
  36. echo "port=3306" >> /etc/my.cnf
  37. echo "max_connections=200" >> /etc/my.cnf
  38. echo "max_connect_errors=10" >> /etc/my.cnf
  39. echo "character-set-server=utf8" >> /etc/my.cnf
  40. echo "default-storage-engine=INNODB" >> /etc/my.cnf
  41. echo "default_authentication_plugin=mysql_native_password" >> /etc/my.cnf
  42. echo "lower_case_table_names=1" >> /etc/my.cnf
  43. echo "group_concat_max_len=102400" >> /etc/my.cnf
  44. echo "[mysql]" >> /etc/my.cnf
  45. echo "default-character-set=utf8" >> /etc/my.cnf
  46. echo "[client]" >> /etc/my.cnf
  47. echo "port=3306" >> /etc/my.cnf
  48. echo "default-character-set=utf8" >> /etc/my.cnf
  49. #复制文件
  50. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 添加mysqld服务到系统!"
  51. cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
  52. #将mysql服务加到系统服务中
  53. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 授权以及添加服务!"
  54. chmod +x /etc/init.d/mysql
  55. chkconfig --add mysql
  56. #初始化,且密码为空
  57. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 初始化,且密码为空!"
  58. /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure
  59. #添加到环境变量
  60. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 添加到环境变量!"
  61. export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
  62. source /etc/profile
  63. #启动服务
  64. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 启动服务!"
  65. service mysql start
  66. #软连接
  67. echo -e "INFO `date +%Y-%m-%d_%H:%M:%S` 添加软连接!"
  68. ln -s /usr/local/mysql/bin/mysql /usr/bin
  69. #sudo ln -s /lib64/libtinfo.so.6 /lib64/libtinfo.so.5

2、编写connect.sh脚本文件,这是连接数据库修改密码的,运行可能会报错,不用管

  1. #! /bin/bash
  2. mysql -uroot<<EOF
  3. use mysql;
  4. update user set host ='%' where user='root';
  5. ALTER USER "root"@"%" IDENTIFIED BY "root";
  6. flush privileges;
  7. EOF

3、编写create_db.sh脚本文件

  1. #! /bin/bash
  2. #再次连接后执行sql就可以修改密码了,很奇怪,可能是因为初始化设置了空密码。
  3. set_db() {
  4. mysql -uroot <<EOF
  5. use mysql;
  6. update user set host ='%' where user='root';
  7. ALTER USER "root"@"%" IDENTIFIED BY "root";
  8. flush privileges;
  9. EOF
  10. echo "打开远程连接、修改密码成功"
  11. }
  12. set_db
  13. #读取sql文件,并用文件名创建数据库
  14. readDir() {
  15. # 获取传入的目录路径
  16. local dir=/usr/local/src/sql_path
  17. # 循环指定目录下的所有文件
  18. local files
  19. files=$(ls "$dir")
  20. for file in $files; do
  21. local path="$dir/$file" #指的是当前遍历文件的完整路径
  22. # 判断是否是目录,如果是目录则递归遍历,如果是文件则打印该文件的完整>路径
  23. if [ -d "$path" ]; then
  24. echo "跳过$path目录"
  25. else
  26. mysql -uroot -proot -e "CREATE DATABASE ${file%%.sql*} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
  27. mysql -uroot -proot ${file%%.sql*} -e "source $path"
  28. echo "执行sql文件${file%%.sql*}中"
  29. fi
  30. echo "运行成功"
  31. done
  32. }
  33. readDir
  34. echo "finished install"

4、编写main.sh主脚本文件,主要是为了整合上面三个文件运行

  1. #! /bin/bash
  2. cd /usr/local/src
  3. #给三个功能脚本授权运行
  4. chmod +x install_mysql.sh
  5. chmod +x create_db.sh
  6. chmod +x connect.sh
  7. ./install_mysql.sh
  8. ./connect.sh
  9. echo "连接mysql中"
  10. ./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主脚本文件

  1. chmod +x main.sh
  2. ./main.sh

 

 

数据库安装完毕,并且数据导入成功!

mysql启动方式:

  1. 1. /etc/init.d/mysql start
  2. start|stop|restart|reload|force-reload
  3. 2. /usr/local/mysql/support-files/mysql.server start
  4. start|stop|restart|reload|force-reload
  5. 3. service mysql start
  6. start|stop|restart|reload|force-reload
  7. 4. systemctl start mysql
  8. start|stop|restart|reload|force-reload

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/923409
推荐阅读
相关标签
  

闽ICP备14008679号