How to change metadata baseUri per minted NFT

I made a basic NFT mint contract with OpenZeppelin imports. Once an NFT is minted, I want as contract owner a method to change the IPFS URI per individual NFT, so I can change the Image link and metadata for that specific NFT.

I can do it for all NFTs, just by changing baseUri (override function tokenURI), but don't know how to do it for individual NFTs.

Related code from my contract:

function tokenURI(uint256 tokenId)                      public view virtual override returns (string memory) {
    require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

    string memory currentBaseURI = _baseURI();
    return bytes(currentBaseURI).length > 0
        ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension))
        : "";

function _baseURI()                                     internal view virtual override returns (string memory) {
    return baseUri;

Use the Contracts Wizard, select ERC721 with Mintable + URI Storage. That will get you a mint function that can set token URIs individually.

You can use this as reference for your contract. The key is ERC721URIStorage.

Thanks! I didn't know of the existence of the Contracts Wizard.