Linux下mysql数据库和workbench的使用


Ubuntu

安装mysql

sudo apt-get install mysql-server mysql-client

测试是否安装成功

sudo netstat -tap | grep mysql

Linux mysql修改root密码:

mysqladmin -u root password your_new_passwd

相关操作

登录 mysql -uroot -p

检查MySQL服务器占用端口 netstat -nlt|grep 3306

检查MySQL服务器系统进程 ps -aux|grep mysql

查看数据库的字符集编码 show variables like '%char%';

让MySQL服务器被远程访问

打开mysql配置文件

sudo vim /etc/mysql/my.cnf #找到将bind-address = 127.0.0.1注销

#bind-address  = 127.0.0.1

修改后,重启MySQL服务器

sudo /etc/init.d/mysql restart

重新登录

mysql -uroot -p

grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx';flush privileges;

检查MySQL服务器占用端口

~ netstat -nlt|grep 3306tcp

 0  0 0.0.0.0:3306  0.0.0.0:*  LISTEN

我们看到从之间的网络监听从 127.0.0.1:3306 变成 0 0.0.0.0:3306,表示MySQL已经允许远程登陆访问。

将字符编码设置为UTF-8(mysql 5.7.17)

默认情况下,MySQL的字符集是latin1,因此在存储中文的时候,会出现乱码的情况,所以我们需要把字符集统一改成UTF-8。
打开mysql配置文件
sudo vim /etc/mysql/mysql.cnf

a) 打开mysql配置文件:  vim/etc/mysql/my.cnf

b) 在[client]下追加:  default-character-set=utf8

c) 在[mysqld]下追加:  character-set-server=utf8

d) 在[mysql]下追加:  default-character-set=utf8

最后:

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8
collation-server = utf8_unicode_ci

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

修改后,重启MySQL服务器,并登录
mysql -uroot -p

再次查看字符串编码

mysql> show variables like '%char%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ | 
+--------------------------+-----------------------------------+
8 rows in set (0.00 sec)

来自简书:http://www.jianshu.com/p/3111290b87f4

workbench 就相当于一个Windows的sqldevelop之类的图形管理工具

Ubuntu自带应用商店有下 但是不带utils  可以去官网下载完整版

有代码提示等功能 挺方便

Fedora/Centos(Fedora是dnf,Centos是yum)

安装mysql

dnf install mysql mysql-server mysql-libs mysql-server

mysql和 mysq lserver装好以后,安装workbench

https://dev.mysql.com/downloads/workbench/

mysql的配置文件被安装到/etc/my.cnf,

mysql server的启动脚本被安装到/etc/init.d/mysqld

打开3306端口

因为mysql默认使用的是3306端口,而centOS默认是不打开此端口的,因此要先打开它,命令是

/sbin/iptables -I INPUT -p tcp --dport 3036 -j ACCEPT

保存设置

/etc/rc.d/init.d/iptables save

更改编码:

[client-server]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
symbolic-links=0
character-set-client-handshake = FALSE
character-set-server = utf8
collation-server = utf8_unicode_ci

!includedir /etc/my.cnf.d

 使用service命令启动、停止和重启MySQL。 

 #service mysqld start //启动
 #service mysqld stop //停止
 #service mysqld restart //重启

  注意,这三个命令里面,是mysqld,后面还有字母d。这是MySQL服务的名称。

或者使用以下命令启动、停止和重启MySQL:

 #/etc/init.d/mysqld start
 #/etc/init.d/mysqld stop
 #/etc/init.d/mysqld retart

修改MySQL密码

  这里只写在丢失了root密码的情况。步骤如下:
  1)  停止mysqld服务

 #service mysqld stop 或#/etc/init.d/mysqld stop

  2)安装模式进入mysql

 #mysqld_safe --user=mysql --skip-grant-tables –skip-networking &
 #mysql -uroot -p

  Enterpassword:  (不输入密码,直接按回车)
mysql>

update mysql.user set password=PASSWORD(‘你要设置的密码’) where user=’root’;

Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>

flush privileges;

Query Ok, 0 rows affected (0.00 sec)
mysql>

quit;

注意,在mysql的每一条命令(即mysql>的命令)最后都要加分号。然后就可以使用你设置的密码登陆了。

#mysql –uroot –p

Enter password:

然后,然后你想干嘛就干嘛了

MYSQL启动问题

如果发现启动不了mysql,要先查看日志,日志存放在/var/log/mysql.log
进入目录/var/log/用gedit打开mysql.log文件,或者用命令行less  /var/log/mysql.log都可以,建议用命令行查看问题。有时候是因为端口被占用,例如:
[ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
[ERROR] Do you already have another mysqld server running on port: 3306 ?
使用命令netstat查看端口使用情况,命令行如下:

#netstat -anp | grep "3306"

如果端口没有被占用,不会显示什么,如果端口被占用,可能显示如下:
tcp  0  0  : : : 3306  : : : *  LISTEN  28194/mysqld
使用kill命令杀掉进程号:28194,命令如下

# kill -9 28194

kill掉进程后,再用命令行netstat -anp|grep "3306"就没有东西了。

另外,如果登录不了MySQL,并且无论怎么修改密码,还是登录不了,例如出现如下错误:

#mysql -u root -p

Enter password:
输入密码后者没有密码按回车后,都出现下面情况
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
这时候可以清理原来数据,重新配置一份数据了。命令行查看配置:

# ps aux | grep mysql

可能显示如下:
root  5978 0.0  0.0 ...... /bin/sh /usr/bin/mysqld_safe  --datadir=/var/lib/mysql  --socket=/var/lib/mysql/mysql.sock  --pid-file=/var/run/mysqld/mysqld.pid  --basedir=/usr  --user=mysql
mysql 6214 0.0 0.0 ..... /usr/libexec/mysqld --basedir=/usr  --datadir=/var/lib/mysql  --user=mysql  --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid  --socket=/var/lib/mysql/mysql.sock

找到了datadir=/var/lib/mysql,只要删除该datadir目录下的数据文件,重新启动mysqld服务,自动生成一份即可。如果数据库里有东西,需要手动把数据库拷贝出去,重新生成后再拷贝回来即可。删除datadir下文件命令如下:

#cd /var/lib/mysql

/var/lib/mysql目录下通常会有下面几个文件:
ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock test
删除,

#rm -rf *

然后重启mysqld服务

# service mysqld restart

重新用root登录,此时密码为空

#mysql -u root

然后修改root密码以及声称新的用户和密码。

#update mysql.user set password=password('new password') where user='root';

Mysql创建、删除用户

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):

1.新建用户

 登录MYSQL:

 @>mysql -u root -p
  @>密码

  创建用户:

mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

  这样就创建了一个名为:test 密码为:1234 的用户。
  注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
  然后登录一下:

  mysql>exit;
  @>mysql -u test -p
  @>输入密码
  mysql>登录成功

2.为用户授权

  授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 
  登录MYSQL(有ROOT权限),这里以ROOT身份登录:

  @>mysql -u root -p
  @>密码

  首先为用户创建一个数据库(testDB):

  mysql>create database testDB;

  授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):

   mysql>grant all privileges on testDB.* to test@localhost identified by '1234';
   mysql>flush privileges;//刷新系统权限表

  格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 
  如果想指定部分权限给一用户,可以这样来写:

  mysql>grant select,update on testDB.* to test@localhost identified by '1234';
  mysql>flush privileges; //刷新系统权限表

  授权test用户拥有所有数据库的某些权限:  

 mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";

  //test用户对所有数据库都有select,delete,update,create,drop 权限。
  //@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)
//对localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。

3.删除用户

 @>mysql -u root -p
 @>密码
 mysql>Delete FROM user Where User='test' and Host='localhost';
 mysql>flush privileges;
 mysql>drop database testDB; //删除用户的数据库

删除账户及权限:

>drop user 用户名@'%';
>drop user 用户名@ localhost;

4.修改指定用户密码

 @>mysql -u root -p
 @>密码
 mysql>update mysql.user set password=password('新密码') where User="test" and Host="localhost";
 mysql>flush privileges;

5.列出所有数据库

mysql>show database;

6.切换数据库

mysql>use '数据库名';

7.列出所有表

mysql>show tables;

8.显示数据表结构

mysql>describe 表名;

9.删除数据库和数据表

mysql>drop database 数据库名;
mysql>drop table 数据表名

mysql5.7测试以上代码通过

参考:

http://www.cnblogs.com/fly1988happy/archive/2011/12/15/2288554.html

http://blog.csdn.net/zhong36060123/article/details/8807824

http://www.programgo.com/article/81882757823/

https://my.oschina.net/quttap/blog/76806

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - Linux下mysql数据库和workbench的使用


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.