yum安装mysql | 版本7和8的远程访问授权语法不同

参考:为CentOS 8操作系统安装MySQL的方法,以安装MySQL 8为例 - 银杏叶的学习笔记 - 博客园       

注:直接运行 yum install mysql* 语句安装的mysql,启动会报错:Failed to start mysqld.service: Unit not found,原因是没有安装成功!可以参考下面这篇博客,可以安装成功。安装成功后直接启动会报错:systemctl start mysql或systemctl start mysqld会卡住无响应。查看日志会发现:/usr/sbin/mysqld: Table ‘mysql.plugin’ doesn’t exist错误。这是因为没有初始化数据库造成的。因为新安装的mysql服务后,一般需要执行数据库初始化操作 ,从而生成与权限相关的表,执行命令如下:

/usr/bin/mysql_install_db --user=mysql

注:以上命令中的mysql_install_db与你安装的mysql服务位置有关,如果不知道在哪,可以使用find / -name mysql_install_db找到其位置,然后执行上面的命令。

find / -name mysql_install_db

/usr/bin/mysql_install_db 

设置允许外部连接:

登录:mysql -u root

show databases;

use mysql;

select user, host from user where user = 'root';

update user set host='%' where user='root' and host = 'localhost'; 

flush privileges;

     Linux环境yum,安装MySQL - 心、累 - 博客园

单独添加mysql开机自启动

systemctl enable mariadb.service 或者 systemctl enable mysqld.service

或者使用下面安装方法进行安装:

mysql yum 安装案例

yum install -y dnf
$ sudo dnf install @mysql
#@mysql模块将安装MySQL及其所有依赖项。
#安装完成后,通过运行以下命令来启动MySQL服务并使它在启动时自动启动:
$ sudo systemctl enable --now mysqld

#要检查MySQL服务器是否正在运行,请输入:
$ sudo systemctl status mysqld


版本初始化
mysqld --initialize-insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
配置文件
cat > /etc/my.cnf <<EOF
> [mysqld]
> user=mysql
> basedir=/app/database/mysql
> datadir=/data/3306
> server_id=6
> port=3306
> socket=/tmp/mysql.sock
> [mysql]
> socket=/tmp/mysql.sock
> EOF
启动脚本
cd /app/database/mysql/support-files/
[root@192 support-files]# ls
magic  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@192 support-files]# cp mysql.server  /etc/init.d/mysqld
#复制到系统启动项

查看刚安装mysql数据库版本信息:rpm -qi mysql-server

登录:mysql -u root

切换到mysql库
mysql> use mysql;

改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';   或者  update user set Password=password('123456') where User='root';

查看用户和能连接的主机, 发现root用户只能在本机连接(host中地址都是代表本机),不能远程用navicat连接
mysql> select user, host from user where user = 'root';

今天为创建的root 用户授予相关权限提示如下错误:

mysql> grant all privileges on * to root@'%' identified '123456';

提示如下错误:ERROR 1064(4200): you have an error in you SQL syntax; **near 'identified '123456'' at line 1

查询MySQL8 相关授权资料的得知,分配权限不能带密码。

修改后的指令如下:

mysql > grant all privileges on * to root@'%';

提示的错误信息如下:You are not allowed to create a user with GRANT;

产生用户不能授权的原因是mysql 数据库中user 表中的特定用户(root) 的host 的属性值为localhost.

解决办法如下:

# 使用mysql 数据库

mysql > use mysql;

# 特定用户的host 修改

mysql > update user set host='%' where user='root';

# 指定用户的授权

mysql > grant all privileges on * to root@'%';

 mysql > flush privileges;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值