链接:https://pan.baidu.com/s/1csFQM-T_FATThGuw2rmOAA
提取码:good
CentOS7一般有一个自带的MySQL体系的数据mariadb,需要先卸载了,顺序执行下面命令
rpm -qa|grep mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 rpm -qa|grep mariadb
# 解压MySQL8安装包 tar -zxvf mysql-8.0.21-el7-x86_64.tar.gz # 更名并移动 mv mysql-8.0.21-el7-x86_64 mysql8 mv mysql8 /opt/apps/ # 进入mysql8目录下,创建mysql8数据文件存放目录 cd /opt/apps/mysql8/ mkdir mysqldb # 创建MySQL组和用户 groupadd mysql # 创建用户(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限) useradd -r -g mysql -s /bin/false mysql # 给mysql目录及其子文件添加用户组和用户 chown -R mysql:mysql ./ # 创建MySQL配置文件 vi /etc/my.cnf # 放入以下内容 # ------------------------------------- [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=/opt/apps/mysql8 # 设置mysql数据库的数据的存放目录 datadir=/opt/apps/mysql8/mysqldb # 允许最大连接数 max_connections=10000 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8 # ------------------------------------- # 安装mysql cd /opt/apps/mysql8/bin ./mysqld --initialize --console
cd /opt/apps//mysql8/support-files/ ./mysql.server start
初次运行会报一个错误
我们不是专业的dba,在这里我们就暴力点,直接给mysql8赋予所有的权限就好了
chmod 777 /opt/apps/mysql8/ cd /opt/apps/mysql8/support-files ./mysql.server start
启动成功
cd /opt/apps/mysql8/bin ./mysql -uroot -pu3&k=d+yw+1y
此时会报一个错误
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我看了很多安装博客,安装的时候都没有提到,我每次安装的时候都有,属实是恶心到我了。在这里搞一个通用的解决办法。先打开前面的my.cnf配置文件,在[mysqld]
下面加上一行skip-grant-tables
,保存,然后执行 /opt/apps/mysql8/support-files/mysql.server restart重启MySQL服务器,再次登录,只输入登录名,输入密码的时候按下回车,一次不行就两次,就绵密登陆进去了。
修改登陆密码,
use mysql
说明:8.0版本不允许在跳过策略 skip-grant-tables 时修改密码。
先清除root用户密码,删除my.conf添加的 skip-grant-tables 后,通过空密码正常访问数据库后,就可以修改密码了。
补充:5.7/5.5 版本在此时就可以直接改一个新密码了。
将密码清空以后,输入exit;退出MySQL,然后去配置文件中删除skip-grant-tables
保存,重启mysql,再次输入密码进入,然后就可以修改密码了。
重新进入mysql,输入修改密码操作,又会出现一个错误,我的耐心真的快被耗尽了。
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
此时输入 set password='一个足够复杂你又记得住的密码';
记住,不要输入一个太简单的密码,不然又会报一个错误。这个错误如下
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
如果你非要设置123456这种简单密码,按照如下操作
执行如下两条语句:
set global validate_password.policy=0; set global validate_password.length=1;
然后再执行set password='一个足够复杂你又记得住的密码';
use mysql update user set user.Host='%'where user.User='root'; flush privileges; quit
在Windows上使用vscode连接mysql,博主我测试成功。