前言:不知道为什么我的云服务器在线安装mysql特别特别慢,于是我手动下载安装了,mysql服务器(本来是想安装5.7的,下错了,查了下使用区别,对我而言这两个版本没啥区别)
首先在线安装
但是对我而言,在线安装的时候太慢了,十几k每秒,无奈我就离线安装,直接去官网下载后对应的版本,
下载这种 rpm-bundle.tar结尾格式到
(Tip:不用注册oracle账号,直接下载)
离线安装
- 1 下载好的安装包直接上传到服务器,(rz 命令或者xshell等工具)
- 2 首先查看之前是否有安装过mysql的服务(像我就前前后后失败好几次)
rpm -qa | grep mariadb # 命令查看 mariadb 的安装包 是否有内容输出
# 如果有 直接卸载
rpm -e mariadb-libs-xxx-xxx # 卸载mariadb
# 在查看是否有内容输出,有就继续卸载 直到没有为止
rpm -qa | grep mariadb
- 3 解压mysql8安装包
tar -xvf mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
# 解压出这些文件
mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
mysql-community-test-8.0.16-2.el7.x86_64.rpm
mysql-community-client-8.0.16-2.el7.x86_64.rpm
mysql-community-common-8.0.16-2.el7.x86_64.rpm
mysql-community-devel-8.0.16-2.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.16-2.el7.x86_64.rpm
mysql-community-libs-8.0.16-2.el7.x86_64.rpm
mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm
mysql-community-server-8.0.16-2.el7.x86_64.rpm
- 4 安装
# 需要依次安装
rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm
- 5 初始化, 生成密码 启动服务
mysqld --initialize;
# 修改目录权限
sudo chown mysql:mysql /var/lib/mysql -R;
# 启动服务
systemctl start mysqld
# 产看密码
cat /var/log/mysqld.log | grep password
- 6 修改密码
mysql -u root -p '原来的密码' # 登陆
use mysql; # 选择数据库
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
- 7 修改成远程连接
网上查到的信息大都是给root用户或者某个用户设置权限,使这个用户可以被远程连接访问。针对该问题的解决办法是通过语句GRANT ALL ON . TO ‘root’@’%’;为root用户(或者是其他用户)设置权限,但我试了几次都是失败的,都报错了,ERROR 1410 (42000): You are not allowed to create a user with GRANT。
我也是这样 警告⚠️: 远程连接很有可能造成数据泄漏等问题,企业服务器慎重!
当然我个人服务器无所谓了
use mysql; # 选择数据库
select host,user,authentication_string,plugin from user; # 查看
# 修改 host 为 % 所有人都可以访问
update user set host = "%" where user = "root";
# 但是这样到话再次修改密码 就得使用下面到命令
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的新密码';
# 退出
exit
# 重启mysql
systemctl restart mysqld
# 这样就能远程连接了
关于mysql8忘记密码修改小知识
如何关闭 --skip-grant-tables 模式
https://unix.stackexchange.com/questions/58655/turn-off-skip-grant-tables-in-mysql
# 查找systemd设置的环境变量,找到以 Environment= 开头的 确认是否是 --skip-grant-tables 模式
sudo systemctl show
# 如果是可以 执行下面语句 解决, 不是的话则此方法不行。
sudo systemctl set-environment MYSQLD_OPTS=""
最后关于创建数据库的小知识
# 第一个字符集选择这个
utf8mb4
# 第二个排序说明选择这个
utf8_general_ci
说明:
1.一般选择utf8.下面介绍一下utf8与utfmb4的区别。
utf8mb4兼容utf8,且比utf8能表示更多的字符。至于什么时候用,看你的做什么项目了,到看unicode编码区从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些字符,你才用utf8mb4,否则只是浪费空间。
2.排序说明
排序一般分为两种:utf_bin和utf_general_ci
bin 是二进制, a 和 A 会别区别对待.
例如你运行:
select * from table where a = ‘a’;
那么在utf8_bin中你就找不到 a = ‘A’ 的那一行, 而 utf8_general_ci 则可以.
utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。(准确度够用,一般建库选择这个)
utf8_unicode_ci准确度高,但校对速度稍慢。