CentOS 系统给mysql创建用户并授予远程访问权限

时间:2022-05-28 08:46:49

第一步:登陆mysql

[root@bogon admin]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 5.6.37 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
第二步 创建mysql用户

使用如下命令创建一个用户名和密码分别为"myuser"和"mypw"的用户。

mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypw';

一旦用户被创建后,包括加密的密码、权限和资源限制在内的所有帐号细节都会被存储在一个名为user的表中,这个表则存在于mysql这个特殊的数据库里。

运行下列命令,验证帐号是否创建成功

mysql> SELECT host, user, password FROM mysql.user WHERE user='myuser';
注意:在创建用户的过程中有可能报错。

ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 5 mysql_upgrade

错误是由于你曾经升级过数据库,升级完后没有使用

mysql_upgrade升级数据结构造成的。

解决办法:

使用mysql_upgrade命令 

root@localhost ~]# mysql_upgrade -u root -p 13456

ok 在执行以上命令,用户创建成功

第三步 :用户创建完成之后,想实现远程访问该用户怎么做呢?

设置CentOS里的Mysql开启客户端远程连接

CentOS系统安装好MySQL后,默认情况下不支持用户通过非本机连接上数据库服务器,下面是解决方法:

1、在控制台执行 mysql -u root -p mysql,系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台,这个命令的第一个mysql是执行命令,第二个mysql是系统数据名称,不一样的。

2、在mysql控制台执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword' WITH GRANT OPTION;

FLUSH PRIVILEGES; 

3、在mysql控制台执行命令中的 'root'@'%' 可以这样理解: root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,你也可替换成任意其它用户名或指定唯一的IP地址;'MyPassword'是给授权用户指定的登录数据库的密码;另外需要说明一点的是我这里的都是授权所有权限,可以指定部分权限,GRANT具体操作详情见:http://dev.mysql.com/doc/refman/5.1/en/grant.html

4、不放心的话可以在mysql控制台执行 select host, user from user; 检查一下用户表里的内容

到此还是在客户端还是连接不上----我的没有遇到,可以连接。

注意:在授权之后,Windows在访问linux上mysql的时候可能还访问不了,解决办法就是关闭linux系统防火墙。

1、关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

补充:

1.chmod -R 0777 * (分配所有的权限)

chmod -R a+r * 读的权限

ps aux |grep mysql (查看mysql状态)

netstat -ano

lsof -i:3306 (查看端口号下的命令)

service iptables stop(关闭防火墙)