Ubuntu下安装MySQL

Ubuntu上安装MySQL最简单的方法就是使用命令进行安装。

$ sudo apt-get install mysql-server

$ apt-get install mysql-client

$ sudo apt-get install libmysqlclient-dev

安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功:

$ sudo netstat -tap | grep mysql

通过命令返回的结果,如果 mysql 的socket处于 listen 状态则表示安装成功。

登陆mysql数据库可以通过如下命令:

$ mysql -u root -p

-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。

设置MySQL远程访问

远程使用数据库客户端软件连接 MYSQL数据时,有时候会出现如下错误:

2003-Can’t connect to MySQL on ‘192.168.0.100’(10061)错误

此错误类型为MySQL服务端不允许远程访问导致,此时需配置开启MySQL的远程访问。

设置mysql允许远程访问,首先要找到MySQL的配置文件,一般位置在如下目录

/etc/mysql/mysql.conf.d/mysqld.cnf

打开方式:

$ sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

// 或者使用如下方式打开配置文件
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

然后找到这一行代码

bind-address = 127.0.0.1    方法一:前面添加"#"直接注释掉

bind-address = 0.0.0.0      方法二:将 127.0.0.1 改成 0.0.0.0

顺便修改MySQL最大允许读取数据量,以防止业务过程中报错错:

错误类型:Packet for query is too large(xxx > 1024)

修改方式:[mysqld] 下 max_allowed_packet    = 16M (设置20M左右为宜)

修改完成后,需要重启MySQL服务器才能生效

$ service mysql restart             // Ubuntu 系统下

$ systemctl restart mysqld.service  // centos 7 系统下

MySQL用户的添加、修改、删除和授权

用户添加:

create user 用户名 identified by '密码';

例:create user haha identified by '123456';

权限控制:

新创建的用户,默认情况下是没有任何权限的,因此需要给用户分配权限

grant 权限 on 数据库.数据表 to '用户'@'主机名';

// 例:给 haha 分配所有的权限
grant all on *.* to 'haha'@'%';

其中 *.* 表示所有的数据库和数据表均可以访问,% 表示可以任意远端IP均可通过该用户连接数据库。

精准的控制用户的权限

grant 权限 on 数据库.数据表 to '用户'@'主机名';

//这个时候 haha 就具有查询d1中的tab1的权限了。
grant select on d1.tab1 to 'haha'@'%';   

再比如:

mysql>grant select,insert,update,delete,create,drop on d1.tab1 to haha@192.168.0.100 identified by ‘123456′;

给来自192.168.0.100的用户haha分配可对数据库d1的tab1表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123456。

如果用户在授权操作时出现如下问题:

ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

那么这不是因为密码错误导致的,而是因为该用户没有授权其他用户的权限,因此,出现错误,授权失败。

可以如下操作进行修改改用户授权权限:

mysql> use mysql;

mysql> update mysql.user set Grant_priv='Y' where User='root' and Host='localhost';

mysql> flush privileges;

刷新完成后,退出并重新登录,该用户就可以正常给其他用户进行数据库授权操作了。

权限撤回:

revoke 权限 on 数据库.数据表 from '用户'@'主机名';

// 收回 haha 的所有权限
revoke all on *.* from 'haha'@'%';

密码修改:(三种方法)

方法1: 用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password(‘新密码’);
例子:mysql> set password for root@localhost = password('123');

方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123

方法3:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges; 

MySQL中root用户无法登陆

有时新安装的MySQL服务器,默认root用户未设置密码,因此无法进行正常的root用户登录操作。

解决方法:

  1. 命令行下 切换当前用户为root权限:

    $ sudo su

  2. 进入MySQL默认安装路径,默认位置为:/etc/mysql/

  3. 打开debian.cnf:

    $ gedit debian.cnf

  4. 找到其中的 user 和 password 字段,然后用此user和password进行MySQL的登录操作。

  5. MySQL登录状态下,修改root用户密码:

    mysql> use mysql;

    mysql> UPDATE user SET authentication_string= password(‘123456’) WHERE User=’root’;

  6. 退出并重启MySQL即可使其设置生效。

MySQL密码重置

有时候我们可能会忘记或丢失数据库链接密码,因此注意修改或重置root密码的方法也是十分必要的。

同样修改配置文件:

$ sudo vi /etc/mysql/my.cnf     在[mysqld]段中加入一行“skip-grant-tables”

$ sudo service mysql restart    重启mySQL服务

$ sudo mysql -u root

然后进行用户添加、授权、修改等一系列操作之后,退出数据库管理状态。

最后将刚才在配置文件中添加的代码删除或者注释,然后重启MySQL服务器,配置好新的用户名和密码,即可正常使用。

$ sudo vim /etc/mysql/my.cnf    把刚才加入的那一行“skip-grant-tables”注释或删除

$ sudo service mysql restart    OK,搞定!

MySQL指令简单使用

show databases; 查看当前的数据库。

show tables; 显示当前数据库的表单

use tablename; 切换到tablename数据库

select * from tablename; 查看表中所有的数据和结构

Windows下MySQL中文乱码情况处理

如果在Windows下使用MySQL时,出现中文乱码的情况,可以进行如下设置:

  1. 在安装目录(或者是ProgramData目录下的MySQL安装目录)下,找到my.ini,设置为

    character-set-server=utf8

  2. 通过代码设置,显示出来所有的设置项目。把其中的非UTF8的编码都设置成utf8:

    show VARIABLES like ‘character_%’;

    set character_set_server=utf8;

  3. 如果在Java端通信数据的时候发生了乱码,设置response的统一字符编码即可:

    response.setCharacterEncoding(“utf-8”);

MySQL卸载和删除

命令apt-get删除mysql

$ sudo apt-get remove --purge mysql-\*    

手动删除mysql剩余文件

$ sudo find / -name mysql -print

显示出所有的含有mysql文件名的路径,如下:  

/var/lib/mysql  
/var/lib/mysql/mysql  
/var/log/mysql  
/usr/bin/mysql  
/usr/lib/mysql  
/usr/share/mysql  
/etc/mysql  
/etc/init.d/mysql

接下来一一删除:执行命令

$ sudo rm -rf /ect/init.d/mysql

直到全部删除。

如果想要重新安装,那么重新执行全新安装的步骤即可。过程中如果报错,可忽略,然后重新执行一次安装代码。

结语

在实际使用中,可能还会出现一些其它的意想不到的错误,本文只是总结了本人在测试环境和实际项目(云服务器)中遇到的一些问题,可能也非典型问题,仅供参考。