Ubuntu mysql 中文,启动,重启,远程连接相关问题

系统环境:ubuntu server 14.04 x64

Ubuntu Server下启动、停止、重启MySQL数据库的三种方式:

当我们需要修​​改MySQL的配置文件my.cnf(windows下为 my.ini)来进行一些设置的时候,修改完之后我们需要重启MySQL。
my.cnf文件位置为:/ect/mysql/my.cnf
Waring:如果该文件配置错误,MySQL将无法启动。

启动mysql:
方式一:sudo /etc/init.d/mysql start 
方式二:sudo start mysql
方式三:sudo service mysql start

停止mysql:
方式一:sudo /etc/init.d/mysql stop 
方式二:sudo stop mysql
方式san:sudo service mysql stop

重启mysql:
方式一:sudo/etc/init.d/mysql restart
方式二:sudo restart mysql
方式三:sudo service mysql restart


查看日志:
cat /var/log/mysql.err
cat /var/log/mysql/error.log

不支持中文:
修改 /etc/mysql/my.cnf
在 [client] 下面增加:
default-character-set=utf8 或 character_set_server=utf8
在 [mysqld] 下面增加:
default-character-set=utf8 或 character_set_server=utf8
错误提示:unknown variable 'default-character-set=utf8'

修改配置文件 /etc/mysql/my.cnf 中的“default-character-set=utf8” 为 “character_set_server=utf8”


远程连接数据库:

数据库安装完成后,如果数据库是安装在远程的服务器上,则发现只能通过远程连接终端本地连接到数据库,而不能通过像mysql-front,navicat客户端远程连接上数据库,可能出现:

Can’t connect to MySQL server on ‘192.168.10.18′ (10061)

看到这里的MYSQL 10061错误了吗?是因为,mysql的默认配置为了增强安全性,禁止了非本机的访问,在ubuntu中是这样,debian中也是。禁止的方式以前是在my.cnf中有一句:

skip-network

现在则变成了:

# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. 
bind-address = 127.0.0.1

就是只监听本机地址。所以,如果要开放局域网内的访问,需要注释掉这一句,或者改成:

bind-address = 0.0.0.0

就行了

这样改完3306端口就开始监听了,但是MYSQL的权限还没有打开ROOT远程登陆

Mysql默认是不允许远程连接的,因为有很大的安全隐患。

需要手动增加可以远程访问数据库的用户。


方法一、本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改为"%"

#mysql -u root -proot
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

方法二、直接授权(推荐 )

    从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:

# mysql -u root -proot 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;


重启Mysql服务后,这样就可用图形化数据库管理软件( Navicat MySQL 或者用更NB的SQLyog是个不错的选择)远程访问Mysql。


补充:

1.mysql数据库中user表中的host列是指定登录的ip,比如说 user=root host=192.168.1.1 ,这里的意思就是说,root用户只能通过 192.168.1.1的客户端去访问,而%则是个通配符, 如果host=192.168.1.%,那么就表示 只要是 ip为host=192.168.1.前缀的客户端都可以连接,那么host=%的话则表示所有ip都有权去连接,这也就是为什么在开启远程连接的时候,大部分人都直接把host改成%的缘故,因为省事。

2.mysql 的grant命令

grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@主机地址 identified by‘连接口令’;

你可能感兴趣的:(数据库,mysql,ubuntu,远程连接)