在Linux操作MySQL

一、使用ps -ef|grep mysql查看mysql是否启动以及查看目录结构

在Linux操作MySQL_第1张图片

MySQL的目录结构:

/var/lib/mysql       mysql数据库文件的存放路径

/usr/share/mysql    配置文件目录  mysql.server命令及配置文件

/usr/bin       相关命令目录 mysqladmin  mysqldump等命令

/etc/init.d/mysql    起停相关脚本

在Linux操作MySQL_第2张图片

二、mysql配置文件

用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,有以下两种可能

1. my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,

2. MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL

我们只需要把my-medium.cnf复制到/etc/my.cnf目录下即可。

`cp /usr/share/mysql/my-medium.cnf /etc/my.cnf`

三、MySQL远程连接

1.先进入MySQL,然后查询当前用户详情:如下

mysql> use mysql;

Database changed

mysql> select host,user,password from user;

+----------------------------+------+----------------------------------------------------------------------------+

| host                           | user | password                                                                            |

+----------------------------+------+----------------------------------------------------------------------------+

| localhost                     | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| localhost.localdomain | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| 127.0.0.1                    | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| ::1                               | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

+-----------------------------+------+---------------------------------------------------------------------------+

4 rows in set (0.00 sec)

2. 添加或修改一行数据,使得host主机有 % ,%表示任何IP都可以连接

mysql> update user set password=password('123456') where user = 'root';

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

mysql> flush privileges;

注意:执行完毕以后,一定要执行flush privileges;

3. 接下来用使用root用户登录,然后use mysql;如果出现如下情况:

ERROR 1044 (42000): Access denied for user ''@'localhost' todatabase 'mysql'!即不能使用mysql,因为在mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的''@'localhost'可以看出来,处理方法:

(1).关闭mysql

   # service mysqld stop

(2.)屏蔽权限

   # mysqld_safe --skip-grant-table

   屏幕出现: Starting demo from .....

(3.)新开起一个终端输入

   # mysql -u root mysql

   mysql> delete from user where user='';

   mysql> flush privileges;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误

注意:执行完毕以后,一定要执行flush privileges,不然仍然会出错;

4.最后的结果如下,然后可以进行远程连接,如果仍然无法连接,可以查看防火墙是否拦截

在Linux操作MySQL_第3张图片

5.如果是阿里云ECS服务器,以上工作都做好了,仍然无法连接,则需要配置ecs安全组防火墙

(1.)在服务器控制台找到  更多->网络和安全组->安全组配置


在Linux操作MySQL_第4张图片


在Linux操作MySQL_第5张图片

(2)到达安全组列表,点击配置规则->添加安全组规则:


在Linux操作MySQL_第6张图片


在Linux操作MySQL_第7张图片

确定以后,即配置完毕

四、mysql中文乱码问题

1.进入mysql中输入show variables like '%char%';命令查看mysql的字符集,如下图:

在Linux操作MySQL_第8张图片

数据库默认的字符编码不是utf-8,所以导致乱码,所以需要修改配置文件中的字符集编码。

2.修改配置文件字符集编码,vim my.cnf 进入修改mysql的配置文件

找到[client],在socket下一行加入default-character-set=utf8,如下图:

找到[mysqld]加入如下设置

character_set_server=utf8

character_set_client=utf8

collation-server=utf8_general_ci

如下图

在Linux操作MySQL_第9张图片

找到[mysql]加入default-character-set=utf8设置:如下图

3.重新开启mysql服务

执行① service mysql stopservice mysql start或者命令service mysql restart

你可能感兴趣的:(在Linux操作MySQL)