前置条件
#mysql 已经注册为服务,已经启动 #检查mysql服务状态,如果为disabled 或者未设置为服务需要启动 设置为服务(为了开机启动)并启动它
#检查mysql状态 centos 7+
systemctl status mysql
# 设置为服务(开机启动)
systemctl enable mysql
# 启动mariadb
systemctl start mysql
使用root 用户连接mysql
如果未设置 root 密码可以使用如下方式登陆
#> mysql
如果已 为mysql root 用户设置了密码,使用如下方式登录
mysql -u root -p
创建用户
1.mysql>CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1'; --如果你要创建一个公网可以访问的用户,可以去掉@localhost 或者将localhost该为公网ip 2.mysql>GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user1'@'localhost'; OR mysql>GRANT ALL ON *.* TO 'user1'@'localhost';
finally
mysql>FLUSH PRIVILEGES;
收回用户权限
revoke all on *.* from user1@localhost;
修改密码
set password for 'root'@'ip_address' = password('xxx');
查看用户访问权限
查询用户表命令:select User,authentication_string,Host,Password from user;
查看某个用户的权限
mysql> show grants for root@localhost;
权限 |
列 |
说明 |
CREATE |
Create_priv |
创建数据库和表 |
DROP |
Drop_priv |
抛弃(删除)数据库和表 |
GRANT OPTION |
Grant_priv |
数据库、表或保存的程序 |
REFERENCES |
References_priv |
未使用 |
ALTER |
Alter_priv |
修改表和索引 |
DELETE |
Delete_priv |
表 |
INDEX |
Index_priv Alter_priv |
创建或抛弃索引 |
INSERT |
Insert_priv |
向表中插入新行 |
SELECT |
Select_priv |
检索表中的记录 |
UPDATE |
Update_priv |
修改现存表记录 |
CREATE VIEW |
Create_view_priv |
视图 |
SHOW VIEW |
Show_view_priv |
视图 |
ALTER ROUTINE |
Alter_routine_priv |
保存的程序 |
CREATE ROUTINE |
Create_routine_priv |
保存的程序 |
EXECUTE |
Execute_priv |
保存的程序 |
FILE |
File_priv |
读或写服务器上的文件 |
CREATE TEMPORARY TABLES |
Create_tmp_table_priv |
服务器管理 |
LOCK TABLES |
Lock_tables_priv |
服务器管理 |
CREATE USER |
Create_user_priv |
服务器管理 |
PROCESS |
Process_priv |
查看服务器中执行的线程信息或杀死线程 |
RELOAD |
Reload_priv |
重载授权表或清空日志、主机缓存或表缓存 |
REPLICATION CLIENT |
Repl_client_priv |
服务器管理 |
REPLICATION SLAVE |
Repl_slave_priv |
服务器管理 |
SHOW DATABASES |
Show_db_priv |
服务器管理 |
SHUTDOWN |
Shutdown_priv |
关闭服务器 |
SUPER |
Super_priv |
服务器管理 |
修改密码
mysqladmin -u root password '19740415'
Mysql的端口是否正确
通过netstat -ntlp 查看端口占用情况,一般情况下端口是3306。在用工具连接MySQl是要用到端口。例如My AdminMy Query BrowserMySQl Front等。
检查用户权限是否正确
mysql库的user表里有两条记录:host分别为localhost和%(为了安全,%可以换成你需要外部连接的IP)。
查看/etc/mysql/my.cnf中,skip-networking 是否已被注掉 需要注掉 报错:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (111)
sudo gedit /etc/mysql/my.cnf #skip-external-locking #bind-address = 127.0.0.1 skip-name-resolve
查看iptables是否停掉,没关的情况下,无法连接
通过:service iptables stop临时关闭。
报错:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (113)
Trouble shooting
如果意外收回了root用户的所有权限
如果你删除了你的root
用户错误地可以做一件事:
- 停止MySQL服务
- 跑
mysqld_safe --skip-grant-tables &
- 类型
mysql -u root -p
然后按回车。 - 输入您的密码
- 在MySQL命令行中输入:
use mysql;
然后执行以下查询:
UPDATE user SET select_priv ='Y', insert_priv='Y' , update_priv='Y', delete_priv= 'Y', create_priv='Y', grant_priv='Y', lock_tables_priv='Y', DROP_PRIV='Y', RELOAD_PRIV='Y', SHUTDOWN_PRIV='Y', PROCESS_PRIV='Y', FILE_PRIV='Y', REFERENCES_PRIV='Y', INDEX_PRIV='Y', ALTER_PRIV='Y', SHOW_DB_PRIV='Y', SUPER_PRIV='Y', CREATE_TMP_TABLE_PRIV='Y', EXECUTE_PRIV='Y', REPL_SLAVE_PRIV='Y', REPL_CLIENT_PRIV='Y', CREATE_VIEW_PRIV='Y', SHOW_VIEW_PRIV='Y', CREATE_ROUTINE_PRIV='Y', alter_routine_priv='Y', create_user_priv='Y', event_priv='Y', trigger_priv='Y', create_tablespace_priv='Y' WHERE host='localhost' AND User = 'root'
然后重新启动mysqld。
reference documents