Ubuntu下安装MySQL和基本操作
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用户登录操作。
解决方法:
命令行下 切换当前用户为root权限:
$ sudo su
进入MySQL默认安装路径,默认位置为:/etc/mysql/
打开debian.cnf:
$ gedit debian.cnf
找到其中的 user 和 password 字段,然后用此user和password进行MySQL的登录操作。
MySQL登录状态下,修改root用户密码:
mysql> use mysql;
mysql> UPDATE user SET authentication_string= password(‘123456’) WHERE User=’root’;
退出并重启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时,出现中文乱码的情况,可以进行如下设置:
在安装目录(或者是ProgramData目录下的MySQL安装目录)下,找到my.ini,设置为
character-set-server=utf8
通过代码设置,显示出来所有的设置项目。把其中的非UTF8的编码都设置成utf8:
show VARIABLES like ‘character_%’;
set character_set_server=utf8;
如果在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
直到全部删除。
如果想要重新安装,那么重新执行全新安装的步骤即可。过程中如果报错,可忽略,然后重新执行一次安装代码。
结语
在实际使用中,可能还会出现一些其它的意想不到的错误,本文只是总结了本人在测试环境和实际项目(云服务器)中遇到的一些问题,可能也非典型问题,仅供参考。