Linux 下操作Mysql指令的总结 远程连接的设置

参考博客:https://www.cnblogs.com/liaocheng/p/4243579.html (常用命令)

https://www.cnblogs.com/zhangzhu/archive/2013/08/22/3274831.html (远程连接的配置)

centOS中常用的Mysql命令:

查看mysql是否安装

rpm -qa | grep mysql 

安装mysql
yum -y install mysql-server

    1. 修改mysql配置
      vi /etc/my.cnf 这里会有很多需要注意的配置项,后面会有专门的笔记

      暂时修改一下编码(添加在密码下方): default-character-set = utf8
    2. 设置mysql随系统启动
      # chkconfig mysqld on  ← 设置MySQL服务随系统启动自启动
      # chkconfig --list mysqld  ← 确认MySQL自启动mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off  ← 如果2--5为on的状态就OK
      # /etc/rc.d/init.d/mysqld start  ← 启动MySQL服务

    3. 显示当前mysql版本和当前日期
      select version(),current_date;

    4. 修改mysql root密码
      # mysql -u root  ← 用root用户登录MySQL服务器
      select user,host,password from mysql.user;  ← 查看用户信息
      set password for root@localhost=password('在这里填入root密码');  ← 设置root密码
      select user,host,password from mysql.user;  ← 查看用户信息
      exit  ← 退出MySQL服务器

    5. 使用密码登陆mysql
      mysql -u root -p 
    6. 删除mysql匿名用户
      select user,host from mysql.user;  ← 查看用户信息
      delete from mysql.user where user='';  ← 删除匿名用户
      select user,host from mysql.user;  ← 查看用户信息
    7. 查看数据库
      show databases;  ← 查看系统已存在的数据库
      drop database test;  ← 删除名为test的空数据库
      show databases;  ← 查看系统已存在的数据库

      mysql查看打开的端口: show variables like 'port';
    8. 创建新用户并为新用户授权
      grant all privileges on test.* to centospub@localhost identified by '在这里定义密码';  ← 建立对test数据库有完全操作权限的名为centospub的用户

      创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令
      mysql> grant all privileges on *.* to user@localhost identified by ’口令’
      增加新用户
      格式:
      grant select on 数据库.* to 用户名@登录主机 identified by “密码”
      GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;
      GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;
      删除授权:
      mysql> revoke all privileges on *.* from root@”%”;
      mysql> delete from user where user=”root” and host=”%”;
      mysql> flush privileges;
    9. 细粒度授权
      创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb
      mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ‘ passwd’

    10. 建立新数据库
      create database test;  ← 建立名为test的数据库 (注意是否可以建立这个数据库是在上面建立新用户的时候就决定了的)
    11. 使用数据库
      use test  ← 连接到数据库
      show tables;  ← 查看数据库中已存在的表
    12. 删除测试账户
      revoke all privileges on *.* from centospub@localhost;  ← 取消centospub用户对数据库的操作权限
      delete from mysql.user where user='centospub' and host='localhost';  ← 删除centospub用户
      select user from mysql.user where user='centospub';  ← 查找用户centospub,确认已删除与否
      flush privileges;  ← 刷新,使以上操作生效
    13. 删除数据库
      drop database name 直接删除数据库,不提醒
      mysqladmin drop databasename 删除数据库前,有提示。
    14. 表操作
      show tables; 显示表
      describe tablename; 表的详细描述
      重命名表: mysql > alter table t1 rename t2;

    15. CentOS系统中mysqldump
      在shell中执行下面的命令

      备份数据库 shell> mysqldump -h yourhost vi-u root -p dbname >dbname_backup.sql
      恢复数据库 shell> mysqladmin -h yourhost -u root -p create dbname
      shell> mysqldump -h yourhost -u root -p dbname < dbname_backup.sql
      如果只想Dump建表指令,则命令如下: shell> mysqladmin -u root -p -d databasename > a.sql
      如果只想Dump插入数据的sql命令,而不需要建表命令,则命令如下: shell> mysqladmin -u root -p -t databasename > a.sql
      那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢? mysqldump -T./ phptest driver
      其 中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。

    16. 可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。
      可利用输入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查询,可如下执行这些查询:
      如果您想将建表语句提前写在sql.txt中: mysql > mysql -h yourhost -u root -p yourdatabase < sql.txt

报错:

Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号

解决方式:

开启mysql的远程连接:

如何开启MySQL的远程帐号-1)首先以 root 帐户登陆 MySQL

在 Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,然后cd 进入MySQL 的 bin 目录下,然后输入下面的命令。
        > MySQL -uroot -p123456                 (123456 为 root 用户的密码。)

 

如何开启MySQL的远程帐号-2)创建远程登陆用户并授权
        > grant all PRIVILEGES on test_db.* to root@'192.168.1.101'  identified by '123456';

 

上面的语句表示将 test_db 数据库的所有权限授权给 root 这个用户,允许 root 用户在 192.168.1.101 这个 IP 进行远程登陆,并设置 root 用户的密码为 123456 。

下面逐一分析所有的参数:

all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

test_db.* 表示上面的权限是针对于哪个表的,test_db指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。

root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

192.168.1.101   表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。

123456 为用户的密码。

 

如何开启MySQL的远程帐号-3)执行了上面的语句后,再执行下面的语句,方可立即生效。
        > flush privileges; 

 

 
原文地址:https://www.cnblogs.com/tujietg/p/10682165.html