MySQL8 安装包
1 2 | mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz 存放目录 : /opt/softs/mysql |
MySQL安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # 依赖安装 sudo yum -y install libaio sudo yum -y install ncurses-compat-libs # mysql 要求的版本是libtinfo.so.5 sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5 # 解压并重命名 sudo tar -xvf /opt/softs/mysql/mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz sudo mv /opt/softs/mysql/mysql-8.0.22-linux-glibc2.12-x86_64 /opt/softs/mysql/mysql8 # 创建用于运行MySQL的组和用户 sudo groupadd mysql # 创建MySQL组 sudo useradd -r -g mysql -s /bin/false mysql # 添加mysql用户 usermod -G mysql $USER # 把当前登录用户加入mysql组 # 创建导入导出操作安全目录 # 该目录用于使具有FILE权限的用户可以安全地执行导入导出操作 sudo mkdir /opt/softs/mysql/mysql8/mysql-files sudo chown mysql:mysql /opt/softs/mysql/mysql8/mysql-files sudo chmod 750 /opt/softs/mysql/mysql8/mysql-files # 创建数据目录 sudo mkdir /opt/softs/mysql/mysql8/data sudo chown mysql:mysql /opt/softs/mysql/mysql8/data sudo chmod 750 /opt/softs/mysql/mysql8/data # 创建MySQL服务启动需要用到的静态配置文件(固定名称) # my.cnf 文件内容下面介绍 sudo touch /etc/my.cnf sudo chown root:root /etc/my.cnf sudo chmod 644 /etc/my.cnf # 修改mysql安装目录权限 sudo chmod -R 777 /opt/softs/mysql/mysql8 # 安装mysql(要记住密码) sudo /opt/softs/mysql/mysql8/bin/mysqld --defaults-file=/etc/my.cnf --initialize --console |
/etc/my.cnf文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=/opt/softs/mysql/mysql8 # 设置mysql数据库的数据的存放目录 datadir=/opt/softs/mysql/mysql8/data # soket文件,本地连接时使用 socket=/opt/softs/mysql/mysql8/data/mysql.sock # 错误日志 log-error=/opt/softs/mysql/mysql8/data/mysqld_error.log # pid文件 pid-file=/opt/softs/mysql/mysql8/data/mysqld.pid # 创建导入导出操作安全目录 secure_file_priv=/opt/softs/mysql/mysql8/mysql-files # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password default-time-zone='+08:00' # 慢查询配置 slow_query_log=ON slow_query_log_file =/opt/softs/mysql/mysql8/data/slow.log # 单位时秒 long_query_time=2 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8 #socket=/opt/softs/mysql/mysql8/data/mysql.sock |
使用systemd管理MySQL8
1 2 3 4 5 6 7 8 9 | # 在系统服务单元配置文件存放目下创建MySQL的服务单元配置文件 # mysqld.service 内容下边介绍 # 配置之后,此时我们已经可以通过systemctl工具手工管理MySQL服务 # systemctl {start|stop|restart|status} mysqld.service sudo touch /usr/lib/systemd/system/mysqld.service sudo chmod 644 /usr/lib/systemd/system/mysqld.service sudo systemctl start mysqld.service # 开启服务 sudo systemctl status mysqld.service # 查看状态 |
mysqld.service文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] # mysql 用户组和用户名 User=mysql Group=mysql # Have mysqld write its state to the systemd notify socket Type=notify # Disable service start and stop timeout logic of systemd for mysqld service. TimeoutSec=0 # Start main service 配置MySQL启动命令 ExecStart=/opt/softs/mysql/mysql8/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS # Use this to switch malloc implementation EnvironmentFile=-/etc/sysconfig/mysql # Sets open_files_limit LimitNOFILE = 10000 Restart=on-failure RestartPreventExitStatus=1 # Set environment variable MYSQLD_PARENT_PID. This is required for restart. Environment=MYSQLD_PARENT_PID=1 PrivateTmp=false |
启动服务报错解决:
- 错误内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [root@tomcatCloud-2 system]# systemctl start mysqld.service Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details. [root@tomcatCloud-2 system]# systemctl status mysqld.service ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Sun 2020-10-25 16:52:31 CST; 14s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 2239 ExecStart=/opt/softs/mysql/mysql8/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS (code=exited, status=1/FAILURE) Main PID: 2239 (code=exited, status=1/FAILURE) Status: "Server startup in progress" Error: 2 (没有那个文件或目录) 10月 25 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794624Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 10月 25 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794724Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable 10月 25 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794763Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable 10月 25 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794801Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine 10月 25 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794921Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 10月 25 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794992Z 0 [ERROR] [MY-010119] [Server] Aborting 10月 25 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.795446Z 0 [System] [MY-010910] [Server] /opt/softs/mysql/mysql8/bin/mysqld: Shutdown complete (mysqld 8.> 10月 25 16:52:31 tomcatCloud-2 systemd[1]: mysqld.service: Main process exited, code=exited, status=1/FAILURE 10月 25 16:52:31 tomcatCloud-2 systemd[1]: mysqld.service: Failed with result 'exit-code'. 10月 25 16:52:31 tomcatCloud-2 systemd[1]: Failed to start MySQL Server. |
- 解决方法 :
上面的错误点 :The innodb_system data file ‘ibdata1’ must be writable;
就是 文件ibdata1(在//opt/softs/mysql/mysql8/data目录里)没有写入权限
1 2 | # 就是给ibdata1 添加权限 chmod -R 777 /opt/softs/mysql/mysql8 |
修改root等操作
1 2 | 登录mysql : mysql -u root -p 然后输入初始密码 |
1 2 3 4 5 6 7 | alter user 'root'@'localhost'IDENTIFIED BY '123456'; -- 修改root 密码 grant all privileges on *.* to 'root'@'%'; -- 授于 root@localhost 所有权限 -- 设置远程登录 CREATE USER 'root'@'%' IDENTIFIED BY '123456'; grant all privileges on *.* to 'root'@'%'; flush privileges; |
mysql一些操作
1 2 3 4 5 6 7 8 9 10 | -- 查询所有用户 SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; -- 创建用户 create user 'test'@'%' identified by '123456'; -- 用户授权 grant all privileges on *.* to 'test'@'%' ; -- 刷新权限 flush privileges; -- 删除用户 drop user 'test'@'%'; |
可选配置( 这好像是 service 服务管理 mysql 的配置 )
1 | 修改 /opt/softs/mysql/mysql8/support-files/mysql.server |
1 2 3 4 | # basedir= basedir=/opt/softs/mysql/mysql8 # datadir= datadir=/opt/softs/mysql/mysql8/data |
1 2 3 4 5 6 7 | sudo cp /opt/softs/mysql/mysql8/support-files/mysql.server /etc/init.d/mysqld sudo chmod 777 /etc/init.d/mysqld chkconfig --list mysqld # 检查自启动项列表中没有mysqld chkconfig --add mysqld # 如果没有就添加mysqld chkconfig mysqld on # 设置开机启动 service mysqld start #启动测试 |