[Linux服务器] linux下安装mysql8

120 0
Honkers 2025-8-30 15:18:25 来自手机 | 显示全部楼层 |阅读模式

1、到指定目录下下载安装包

  1. [root@VM-0-14-centos ~]# cd /usr/local/src
复制代码

 2、下载mysql8

  1. [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、授权用户

  1. [root@VM-0-14-centos mysql]# chown -R mysql.mysql /usr/local/mysql
复制代码

7、编辑my.cnf文件

  1. [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目录下

  1. [root@VM-0-14-centos mysql]# cd bin
复制代码

9、初始化基础信息,最后一行后面会有个随机的初始密码保存下来一会登录要用(如果忘记了就删掉data重新初始化)

  1. [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到机器安装

  1. rpm -ivh XXX.rpm
复制代码
  1. [root@VM-0-14-centos bin]# ./mysqld --initialize
复制代码

 记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码

 10、添加mysqld服务到系统

先返回到mysql目录

  1. [root@VM-0-14-centos bin]# cd ..
复制代码

  1. [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

  1. [root@VM-0-14-centos mysql]# service mysql start
复制代码

13、将mysql添加到命令服务

  1. [root@VM-0-14-centos mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin
复制代码

14、登录mysql

  1. [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
复制代码

  1. sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
复制代码

15、输入刚刚初始化时生成的密码

16、更改root用户密码, 注意语句后的; 执行语句忘记写了 可以补个空的;回车也可以将语句执行

  1. mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
复制代码

  1. 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) 

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

mysql不需要密码或者密码乱输入也能登录的问题

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

脚本的方式一键安装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个都要执行

  1. sed -i 's/\r$//' ***.sh
复制代码

7、创建sql_path文件夹,把需要导入的sql文件放进去,create_db.sh脚本文件用sql来创建数据库并生成表数据

  1. 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
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行