参考:为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开机自启动
|
或者使用下面安装方法进行安装:
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;