linux下mysql相关命令 ubuntu18.04系统
1、如何登陆mysql、退出mysql
进入mysql,在根目录下,输入命令 mysql -uroot -p,后面输入数据库密码
退出mysql,在mysql下,输入命令 quit或者exit
2、Linux查看mysql 安装路径
可以用下面的命令查看所有的文件路径 ,在终端输入:
whereis mysql
回车,如果你安装好了mysql,就会显示文件安装的地址,例如我的显示(安装地址可能会不同)
[root@localhost ~]# whereis mysql
mysql: /usr/bin/mysql /usr/lib/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
3、查询运行文件所在路径(文件夹地址)
如果你只要查询文件的运行文件所在地址,直接命令(还是以mysql为例):
which mysql
终端显示:
[root@localhost ~]# which mysql
/usr/bin/mysql
4、查看mysql数据库文件存储位置
进入mysql后,输入命令
showglobalvariableslike“%datadir%";
返回结果:
mysql> show global variables like “%datadir%";
+—————+—————–+
| Variable_name | Value |
+—————+—————–+
| datadir | /var/lib/mysql/ |
+—————+—————–+
1 row in set (0.00 sec)
5、查看、创建、修改数据库名
查看所有数据库名,输入命令
show databases;
创建数据库名,输入命令:
create database +数据库名称 ;(注意分号结尾)
高级命令创建数据库,且设置数据库编译格式为utf8或 utf8mb4:
CREATE DATABASE abc数据库名称 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE abc数据库名称 CHARACTER SET utf8 COLLATE utf8_general_ci;
6、启动mysql服务
ubuntu系统下:
启动mysql,输入命令
sudo /etc/init.d/mysql start
停止mysql,输入命令
sudo /etc/init.d/mysql stop
重启mysql,输入命令
sudo /etc/init.d/mysql restart
7、修改统一数据库编码格式为utf8
a.先查看当前数据库编码格式:
输入命令mysql -uroot -p 进入mysql
继续输入命令
showvariableslike'%character%’;
返回结果为当前所有数据库的编码格式
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)
b.从上面可以看出mysql初始并非所有都是utf8编码,需要进行修改统一。
执行命令control+d ,退出数据库
继续执行命令进入vi编辑
sudo vim /etc/mysql/conf.d/mysql.cnf
在 [mysql]
标签的下一行添加下面的配置
default-character-set=utf8
输入下面的命令,打开第二个配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到 [mysqld]
标签,在其下一行添加下面的配置
character-set-server=utf8
配置文件修改成功之后,输入下面的命令重启mysql服务
sudo /etc/init.d/mysql restart
8、安装网站程序起始页,需要填写数据库地址
一般填写 localhost
9、查看下mysql的user表的用户权限
输入命令
selectuser, pluginfrom mysql.user;
返回结果
+——————+———————–+
| user | plugin |
+——————+———————–+
| root | auth_socket |
| mysql.session | mysql_native_password |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+——————+———————–+
4 rows in set (0.00 sec)
查看user表host、username、authentication_string密码信息
连接数据库服务器:
mysql -u root -p
显示所有的database:
showdatabases;
选择名为“mysql”的database:
use mysql;
显示“mysql” database的所有表:
showtables;
可以看到“mysql”database中有个user表:
显示user表结构:
desc user;
查看当前所有MySQL用户的username、host、密码(注意MySQL从某个版本开始,密码字段不是password,而是authentication_string):
selectUser,Host,authentication_string fromuser;
可以看到:
mysql> select User,Host,authentication_string from user;
+——————+———–+——————————————-+
| User | Host | authentication_string |
+——————+———–+——————————————-+
| root | localhost | *41553C6F2E22C0515D9EC250AB12FC9245DF6F04 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *26A6386C3FE81DB74F8778DA77035242A9698E53 |
| root | % | *41553C6F2E22C0515D9EC250AB12FC9245DF6F04 |
+——————+———–+——————————————-+
5 rows in set (0.00 sec)
10、开放root@localhost在图形界面登录权限
问题很奇葩,ubuntu下用root登陆mysql可以成功,但通过图形界面登陆mysql却报错: ERROR 1698 (28000): Access denied for user 'root’@’localhost’
输入命令,登陆mysql
sudo mysql -u root -p
查看user表:
selectuser, pluginfrom mysql.user;
结果如下:参考9问题
| user | plugin |
+——————+———————–+
| root | auth_socket |
发现root的plugin并不是本地密码,因此需要修改它,但由于MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。如果修改的密码太过低级,则无法通过,报如下错误:
ERROR1819 (HY000): Your password does not satisfy the current policy requirements
先在mysql登陆下,修改密码策略,依次输入命令
setglobal validate_password_policy=0;
setglobal validate_password_mixed_case_count=0;
setglobal validate_password_number_count=3;
setglobal validate_password_special_char_count=0;
setglobal validate_password_length=3;
继续修改root用户对应密码,输入命令
update mysql.user set authentication_string=PASSWORD('输入root用户的密码'), plugin='mysql_native_password’whereuser='root’;
继续输入命令,刷新
flushprivileges;
重启mysql
我是ubuntu系统,输入命令如下。其他系统输入常用重启mysql命令即可
sudo /etc/init.d/mysql restart
进入mysql,查看user表root密码是不是本地
最后通过图形界面访问 'root’@’localhost’成功!
11、开放mysql任意ip远程访问权限
编辑mysql的启动配置文件
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
加前缀#注释掉bind-address = 127.0.0.1
保存并退出gedit
授权远程任意IP地址可以访问数据库
mysql> grant all privilages on hello.* to xyz@"%" identified by “访问数据库的密码" with grant option;
mysql> flush privileges;
mysql> quit
sudo ufw enable
sudo ufw default deny
sudo ufw allow 3306
重启mysql
sudo /etc/init.d/mysql restart
输入命令
netstat -an|grep 3306
返回结果,本地127 ip以变为:::,则表明容许任何ip访问数据库
root@node1:~# netstat -an | grep 3306 tcp6 0 0 :::3306 :::* LISTEN
12、mysql提示密码不符合要求:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql -u root -p #登录
mysql>set global validate_password_policy=0; #密码强度设为最低等级
mysql>set global validate_password_length=4; #密码允许最小长度为4
mysql>flush privileges; #更新授权表,生效
13、确认mysql 3306端口开放访问
输入命令
netstat -an|grep3306
返回结果
root@node1:~# netstat -an | grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
注意:现在的3306端口绑定的IP地址是本地的127.0.0.1